达梦数据库体系结构
重做日志文件记录的是数据库发生变更的信息。数据库开启归档模式后,重做日志文件在覆盖前,拷贝重做日志文件的内容到归。共享内存池是在其他缓冲区或内存池不够用情况下提供内存,减少系统的调用,将数据缓冲区的脏页,在一定机制(数据缓冲区满,数据库关闭,执行检查点)数据库开启归档模式后,重做日志文件在覆盖前将重做日志文件的内容拷贝到归。表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中。,归档
·
DM8 体系结构
DM 数据库是一个典型的 C/S 架构,由客户端 + 服务器构成
数据库服务器( DMSERVER ):数据库 + 实例
数据库:一堆磁盘上的数据库文件,包括: 配置文件,控制文件,数据文件,重
做日志文件 ,归档日志文件,备份文件,日志文件,跟踪日志文件等。
实例:后台进程 / 线程 + 共享内存
DM 数据库是单进程多线程的架构。
一个实例管理一台数据库就叫单实例环境
多个实例管理一台数据库就叫 DMDSC 共享存储集群环境。
存储结构
物理存储结构
select para_name,PARA_VALUE,PARA_TYPE from v$dm_ini;
参数类型:
SESSION :动态,会话级参数,即改即生效,针对当前会话有效。
SYS :动态,系统级参数,即改即生效。
IN FILE :静态参数,修改后需要重启数据库实例生效。
READ ONLY :只读,需要文本编辑器修改参数,修改参数后,需要重启数据库实
例生效。
修改参数:
sp_set_para_value( 参数类型 , 参数姓名 , 参数值 );
说明:
参数类型等于 1 ,就是动态参数,即改即生效
参数类型等于 2 ,就是静态参数,需要重启数据库实例生效
修改动态参数:
sp_set_para_value(1,'TSORT_OPT',0);
或者
alter system set 'TSORT_OPT' =1 BOTH;
修改静态参数:
COMPATIBLE_MODE
是否兼容其他数据库模式。
0 :不兼容,
1 :兼容 SQL92 标准,
2 :部分兼容 ORACLE ,
3 :部分兼容 MS SQL SERVER ,
4 :部分兼容 MYSQL ,
5 :兼容 DM6 ,
6 :部分兼容 TERADATA ,
7 :部分兼容 POSTGRES
修改数据库的兼容模式为兼容 oracle 数据库。
sp_set_para_value(2,'COMPATIBLE_MODE',2);
或者
alter system set 'COMPATIBLE_MODE' =2 SPFILE;
( 2 )控制文件
达梦数据库只有一个控制文件,无法多路复用。
控制文件内容:
1. 数据库名称;
2. 数据库服务器模式;
3. OGUID 唯一标识; 4. 数据库服务器版本;
5. 数据文件版本;
6. 数据库的启动次数;
7. 数据库最近一次启动时间;
8. 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中
使用的
表空间,数组的方式保存起来;
9. 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,
保证控
制文件合法性,防止文件损坏及手工修改。
控制文件的转换:
[dmdba@localhost bin]$ ./dmctlcvt help
将控制文件转换为文本文件:
[dmdba@localhost bin]$ ./dmctlcvt
type=1 src=/dm8/data/DAMENG/dm.ctl
dest=/tmp/dmctl.txt
( 3 )数据文件
.DBF 结尾的文件
select * from DBA_DATA_FILES;
select * from v$datafile;
( 4 )重做日志文件
重做日志文件记录的是数据库发生变更的信息。达梦数据库没有日志组,至少有
两个日志文件。
重做日志文件的特点:循环写、可覆盖。
查看日志文件:
select path,rlog_size/1024/1024 from v$rlogfile;
select * from v$rlog;
添加日志文件:
alter database ADD LOGFILE '/dm8/data/DAMENG/DAMENG03.log' size 300;
Resize 日志文件大小:
alter database RESIZE LOGFILE '/dm8/data/DAMENG/DAMENG01.log' to 300;
alter database RESIZE LOGFILE '/dm8/data/DAMENG/DAMENG02.log' to 300; 总结:重做日志文件只能添加不能删除,只能扩大不能缩小。
( 5 )归档日志文件
数据库开启归档模式后,重做日志文件在覆盖前,拷贝重做日志文件的内容到归
档路径下做副本。
( 6 )备份文件
逻辑存储结构
页:页是数据库最小的使用单元,支持的页大小有 4k 、 8k 、 16k 、 32k ,默认页大
小为 8k 。
簇:连续的 16 、 32 、 64 个页组成,一个簇总是在一个数据文件中,簇是数据库
最小的分配单元。
段:是簇的上级逻辑单元,段是可以跨多个数据文件的。
表空间:一个数据库可以拥有多个表空间,一个表空间可以拥有一个或多个数据
文件,一个数据文件只能属于一个表空间。
内存结构
( 1 )共享内存池
共享内存池是在其他缓冲区或内存池不够用情况下提供内存,减少系统的调用,
提升数据库性能。
参数:
MEMORY_POOL
select para_name,para_value,para_type from v$dm_ini where para_name like '%MEMORY%';
( 2 )数据缓冲区
数据缓冲区缓存的是数据页。数据缓冲区满不会向共享内存池申请内存,会淘汰
很少被使用到的数据页。
参数: BUFFER
select para_name,para_value,para_type from v$dm_ini where para_name
='BUFFER';
数据缓冲区大小设置建议:
Oltp :建议设置为物理内存的 40%-60%
Olap :建议设置为物理内存的 60%-80%
数据缓冲区的类型:
Normal 、 keep :可以手动维护和管理,达梦数据库 keep 的是表空间, Oracle keep
的是表。
Fast 、 recycle :缓存的是临时页和回滚页,数据库自动维护管理。
修改数据缓冲区大小为 800M
sp_set_para_value(2,'BUFFER',800);
( 3 )重做日志缓冲区
缓存的是重做日志的信息。重做日志缓冲区满不会向共享内存申请内存,会向操
作系统申请内存。单位是页。
参数: RLOG_BUF_SIZE
select
para_name,para_value,para_type
from
v$dm_ini
where
para_name='RLOG_BUF_SIZE';
( 4 ) SQL 缓冲区
SQL 缓冲区缓存的是包、 SQL 、执行计划、结果集信息,当数据库中 SQL 类别、
包比较多时应该考虑调整 SQL 缓冲区的大小,当 SQL 缓冲区不够用时会向服务器
申请内存。
参数: CACHE_POOL_SIZE
select
para_name,para_value,para_type
from
v$dm_ini
where
para_name='CACHE_POOL_SIZE';
( 5 )字典缓冲区
字典缓冲区缓存的是数据字典的信息。当数据库中存在大量的数据库对象、分区
表时,应该考虑调整字典缓冲区的大小。当字典缓冲区不够用时,会向服务器申
请内存。
参数: DICT_BUF_SIZE
select
para_name,para_value,para_type
from
v$dm_ini
where
para_name='DICT_BUF_SIZE'; ( 6 )排序区
排序区主要缓存的是排序的信息。
参数: SORT_BUF_SIZE
select
para_name,para_value,para_type
from
v$dm_ini
where
para_name='SORT_BUF_SIZE';
线程结构
( 1 )监听线程
在数据库服务器端,监听来自客户端的连接请求,加入工作线程的队列。
( 2 ) IO 线程
将数据文件中的数据页加载到数据缓冲区中;
将数据缓冲区的脏页,在一定机制(数据缓冲区满,数据库关闭,执行检查点)
下更新到磁盘上的数据文件中。
( 3 )日志刷新线程
将重做日志缓冲区中的重做日志记录在一定机制(事务提交、执行检查点)下更
新到磁盘上的重做日志文件中。
( 4 )日志归档线程
数据库开启归档模式后,重做日志文件在覆盖前将重做日志文件的内容拷贝到归
档目录做副本。
( 5 )日志重做线程
主要用于数据库实例恢复
( 6 )调度线程
检查系统级的时间触发器;
清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存
项;
动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
自动执行检查点 ;
会话超时检测 ;
必要时执行数据更新页刷盘;
唤醒等待的工作线程 ;
( 7 )工作线程
内核的工作线程机制包括普通内核线程和用户态线程两种 , 普通内核线程的切换
完全由操作系统决定 , 但操作系统无法了解进程内部的运行机制,只能采取通用
的调度策略来管理各个内核线程 ; 用户态线程在内核线程内部自主调度,有效减
少上下文切换
达梦社区地址
https://eco.dameng.com
更多推荐
所有评论(0)