达梦数据库体系结构
DM7数据库是由数据库和实例构成。
一.数据库
DM 数据库指的是磁盘上存放在DM 数据库中的数据的集合
- 数据库文件
存放用户的数据SQL>select path from v$datafile;
- 重做日志文件
存放用户改变的数据,方便做还原SQL>select path from v$rlogfile; SQL>select path,rlog_size/1024/1024 from v$rlogfile;
- 控制文件
数据库的架构信息,数据库的版本,创建时间等SQL>select para_name,para_value from v$dm_ini where para_name='CTL_PATH'; SQL>select para_name,para_value from v$dm_ini where para_name='CTL_BAK_PATH'; SQL>select para_name,para_value from v$dm_ini where para_name='CTL_BAK_NUM';
- 配置文件
数据配置相关的参数desc v$dm_ini; SQL>select para_name,para_value,para_type from v$dm_ini;
二.实例
实例一般是由一组正在运行的DM 后台进程/线程以及一个大型的共享内存组成
- 数据缓冲区
buffer 存放读取和修改的数据块SQL>select path from v$datafile;
- 字典缓冲区
存放最近使用的数据字典,减少IOSQL>select para_name,para_value from v$dm_ini where para_name like 'DICT_BUF_SIZE';
- 重做日志缓冲区
存放改变的数据块的信息SQL>select para_name,para_value from v$dm_ini where para_name like 'RLOG_BUF_SIZE';
- SQL缓冲区
存放最近使用的SQL和DMSQL代码,SQL的执行计划和sql的结果集SQL>select sql_id,TOP_SQL_TEXT from v$sql_history; SQL>select sql_id,sql_text from v$sqltext; SQL>desc v$sqltext; SQL>select sql_id,sql_text from v$sqltext; SQL>select para_name,para_value from v$dm_ini where para_name like 'CACHE_POOL_SIZE';
- 排序区
排序操作,隐含排序操作:distinct 有排序动作时才有排序区SQL>select para_name,para_value from v$dm_ini where para_name like 'SORT_BUF_SIZE';
- Hash区
hash join存放hash值SQL>select para_name,para_value from v$dm_ini where para_name like 'HJ_BUF_SIZE';
- SSD缓冲区
SQL>select para_name,para_value from v$dm_ini where para_name like 'SSD_BUF_SIZE';
三.后台进程和线程
- 监听线程
检测外部会话连接 - IO线程
把脏数据写磁盘(完全检查点) - 日志刷新线程
把日志缓冲区的数据写磁盘 - 日志重做线程
数据库异常关闭,下次启动利用日志重做线程,构造脏数据(数据已经写到重做日志文件,但未写到数据文件的) - 日志归档线程
把重做日志做一个副本 - 工作线程
执行调度线程分配的任务 - 调度线程
回收失效的段,唤醒工作线程执行任务,分配任务给工作线程