物理结构是数据库在操作系统层面可见的文件集合:
.dbf后缀.ctl后缀.log或.redo后缀数据库(Database)
└── 表空间(Tablespace)
└── 段(Segment)
└── 区(Extent)
└── 块(Block)
类型:
用户进程:客户端应用
服务器进程:处理SQL/PLLSQL
后台进程:
.dbf(兼容)或自定义dm.ctl)dm_roll,存储回滚记录数据库(Database)
└── 表空间(Tablespace)
└── 段(Segment)
└── 簇
└── 页(Page)← 对应Oracle Block
达梦采用全局内存池 + 会话私有内存模式(类似SGA+PGA)
内存池:包括共享内存池和其他一些运行时内存池。
缓冲区:
数据缓冲池:缓存数据页(可配置多缓冲池:NORMAL/FAST/RECYCLE)
日志缓冲池:日志缓冲区是用于存放重做日志的内存缓冲区。
字典缓冲区:字典缓冲区主要存储一些数据字典信息,如模式信息、表信息、列信息、触发器。
SQL 缓冲区:SQL 缓冲区提供在执行SQL语句过程中所需要的内存,包括计划、SQL语句和结果集
排序区(全局部分):大型排序共享区域
哈希区:DM8提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。
守护进程:系统监控和守护(dmserver主进程 + dmwatcher)
工作线程:处理用户请求
后台线程:
与Oracle区别:达梦采用多线程架构(一个进程多线程),Oracle早期版本多进程,现代版本混用。
| 对比维度 | Oracle | 达梦DM8 |
|---|---|---|
| 数据库模型 | 关系型 + 多租户(CDB/PDB) | 关系型 |
| 架构风格 | 多进程(Unix/Linux) | 多线程(跨平台一致) |
| 物理文件 | .dbf, .ctl, .log, .arc | .dbf, .ctl, .log, dm.ini等 |
| 特有文件 | 密码文件、参数文件(SPFILE) | 回滚文件、集群配置文件 |
| 块/页大小 | 2K~32K,默认8K | 4K/8K/16K,默认8K |
| 表空间类型 | SYSTEM, SYSAUX, UNDO, TEMP, USERS | SYSTEM, ROLL, TEMP, MAIN, HMAIN |
| 逻辑层级 | DB → Tablespace → Segment → Extent → Block | DB → Tablespace → Segment → Extent → Page |
| UNDO管理 | UNDO表空间自动管理 | 回滚表空间(ROLL) |
| 内存管理 | SGA + PGA | 全局内存池 + 会话私有内存 |
| 缓冲池 | DEFAULT/KEEP/RECYCLE | NORMAL/KEEP/RECYCLE |
| SQL解析 | 共享池(硬/软解析) | 共享池(缓存计划) |
| 并行查询 | 支持(需要并行度配置) | 支持 |
| 高可用 | RAC, Data Guard | MPP, 读写分离集群, 数据复制 |
| 容灾方案 | Active Data Guard | DM Data Watch |
| 备份恢复 | RMAN(成熟强大) | 逻辑备份/物理备份(DMRMAN) |
| 自调优 | AWR, ASH, SQL Tuning Advisor | 动态性能视图,部分自动调优 |
| 第三方兼容 | 标准SQL,PL/SQL | 高度兼容Oracle PL/SQL语法 |
Oracle:
SGA_TARGET自动调优(11g+)达梦:
BUFFER参数设置,支持多池Oracle (Unix):
bash
oracle_<SID> (PMON)
oracle_<SID> (SMON)
oracle_<SID> (DBW0)
oracle_<SID> (LGWR)
达梦:
bash
dmserver (主进程,内部含多线程)
├── IO线程
├── 日志线程
├── 工作线程1...N
└── 监控线程
影响:达梦在Windows上更高效(Oracle Windows版本也是线程模式)。
Oracle:
UNDO_RETENTION)达梦:
dm_roll文件达梦社区技术 https://eco.dameng.com
文章
阅读量
获赞
