DM8数据库体系结构

            DM8数据库体系结构

1、简介:新一代的关系型数据库、全面支持ANSI SQL标准和主流编程语言接口/开发框架。在兼顾OLAP和OLTP的同时,满足HTAP混合应用场景。
DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
OLAP (On-Line Analytical Processing):联机实时分析OLAP
OLTP (On-Line Transaction Processing):联机事务处理OLTP
HTAP (Hybrid Transaction and Analytical Process):混合事务和分析处理
2、特性
DMSERVER:C/S 架构,由客户端+服务器构成
DMSERVER=数据库(数据库文件)+实例
数据库文件:配置文件、控制文件、重做日志文件、数据文件、归档日志文件、备份文件、
日志文件
实例:一组 dm 后台进程或者线程+共享内存
单实例:一个实例管理一个数据库
DMDSC:多个实例管理一个数据库,最多支持 8 个节点 DSC,类似于 Oracle rac
3、逻辑结构/物理结构

3.1 物理结构

配置文件
以.ini 结尾的文件

dm.ini 文件满足 oracle pfile+spfile 文件
查询视图:
select para_name,PARA_VALUE,PARA_TYPE from v$dm_in

参数类型:
sys:系统级,影响全局
session:会话级,针对当前会话有效
Infile:静态参数,实例重启才能生效
Readonly:只读参数,只能手动编辑修改
例 1:修改数据库的兼容模式为兼容 Oracle 数据库。
方法一:Sp_set_para_value(参数类型,参数名,参数值)
参数类型为 1,动态参数,即改即生效
参数类型为 2,静态参数,实例重启生效
方法二:alter system set ‘COMPATIBLE_MODE’=2 SPFILE;
方法三:手动编辑参数文件
例 2:打开日志功能
方法一:sp_set_para_value(1,‘SVR_LOG’,1);方法二:alter system set ‘SVR_LOG’=0 both;
方法三:手动编辑参数文件
注意:无论是静态参数,还是动态参数,通过手动编辑参数文件之后,都需要重启数据库实
例,才能生效。
(2)数据文件
以.DBF 结尾的文件

select * from dba_data_files;
select * from v$datafile;
(3)控制文件
以.ctl 结尾的文件

select para_name,para_value from v d m i n i w h e r e p a r a n a m e l i k e ′ 查 看 控 制 文 件 的 内 容 / d m 8 / b i n 查 看 帮 助 [ d m d b a @ l o c a l h o s t b i n ] dm_ini where para_name like '%PATH%'; 查看控制文件的内容 /dm8/bin 查看帮助 [dmdba@localhost bin] dminiwhereparanamelike/dm8/bin[dmdba@localhostbin] ./dmctlcvt help
[dmdba@localhost bin]$ ./dmctlcvt type=1 src=/dm8/data/data/TEST/dm.ctl dest=/tmp/ctl.txt
控制文件记录了数据库的模式,数据库名,上一次启动时间,数据库启动次数,数据库文件
版本,表空间信息等。
(4)重做日志文件
重做日志文件记录的是数据库发生变更的信息。达梦数据库没有日志组,至少需要两个日志
文件。重做日志文件的特点:循环写,可覆盖。
查询重做日志文件
select * from v r l o g f i l e ; s e l e c t ∗ f r o m v rlogfile; select * from v rlogfile;selectfromvrlog;
Resize 重做日志文件
alter database RESIZE logfile ‘/dm8/data/data/TEST/TEST01.log’ to 260;
alter database RESIZE logfile ‘/dm8/data/data/TEST/TEST02.log’ to 260;
新增重做日志文件
alter database add LOGFILE ‘/dm8/data/data/TEST/TEST03.log’ size 260;迁移重做日志文件
alter database mount;
alter database rename logfile ‘/dm8/data/data/TEST/TEST03.log’ to ‘/dm8/TEST03.log’;
alter database open;
注意:重做日志文件不能被删除,也不能缩小。
(5)备份文件
以.bak 为扩展名的文件,备份文件就是数据库在某一个时间点的副本。
.meta 记录的是备份信息
(6)跟踪日志文件
跟踪日志文件记录的是系统各会话执行的 sql 语句信息,主要是错误的信息和性能的问题。
默认关闭,参数是 SVR_LOGI
select para_name,para_value from v d m i n i w h e r e p a r a n a m e = ′ S V R L O G ′ ; 3.2 逻 辑 结 构 页 : 默 认 为 8 k , 支 持 4 k 、 8 k 、 16 k 、 32 k , 是 数 据 库 最 小 的 分 配 单 元 。 包 含 页 头 信 息 , 数 据 , 空 闲 空 间 , 行 便 宜 数 组 。 簇 : 是 由 一 组 连 续 的 页 组 成 , 默 认 为 16 个 页 , 支 持 16 、 32 个 页 。 一 个 簇 总 是 在 一 个 数 据 文 件 中 的 。 段 : 是 簇 的 上 级 逻 辑 单 元 , 段 是 可 以 跨 多 个 数 据 文 件 。 段 又 分 为 数 据 段 ( 表 段 、 索 引 段 ) 、 临 时 段 、 回 滚 段 。 S E L E C T ∗ F R O M D B A S E G M E N T S ; 表 空 间 : 一 个 数 据 库 拥 有 多 个 表 空 间 , 一 个 表 空 间 可 以 拥 有 一 个 或 多 个 数 据 文 件 , 一 个 数 据 文 件 只 能 属 于 一 个 表 空 间 。 s e l e c t ∗ f r o m d b a t a b l e s p a c e s ; s e l e c t ∗ f r o m v dm_ini where para_name='SVR_LOG'; 3.2 逻辑结构 页:默认为 8k,支持 4k、8k、16k、32k,是数据库最小的分配单元。包含页头信息,数据, 空闲空间,行便宜数组。 簇:是由一组连续的页组成,默认为 16 个页,支持 16、32 个页。一个簇总是在一个数据文 件中的。 段:是簇的上级逻辑单元,段是可以跨多个数据文件。段又分为数据段(表段、索引段)、 临时段、回滚段。 SELECT * FROM DBA_SEGMENTS; 表空间:一个数据库拥有多个表空间,一个表空间可以拥有一个或多个数据文件,一个数据 文件只能属于一个表空间。 select * from dba_tablespaces; select * from v dminiwhereparaname=SVRLOG;3.28k4k8k16k32k便161632SELECTFROMDBASEGMENTS;selectfromdbatablespaces;selectfromvtablespace;
3.3DM8 内存结构
(1)共享内存池
共享内存池是为其他内存池或者缓冲区在不够用的情况下,提供扩展。共享内存池可以减少
系统调用,提升数据库的运行效率。

MEMORY_POOL:共享内存池大小
MEMORY_TARGET:可以扩展到的目标大小,0 代表不限制
MEMORY_EXTENT_SIZE:增量大小
(2)其他运行时内存池
在需要时被创建,使用完立即销毁。例如:会话内存池、虚拟机内存池,排序缓冲区。
(3)数据缓冲区
缓存的是数据页,使用数据缓冲区可以提升数据库的性能。数据缓冲区设置的太小,会造成
性能方面的问题。参数:buffer

参考值:oltp:物理内存的 40%-60%,olap:物理内存的 60%-80%
数据缓冲区有 4 种类型:
Normal、keep、fast、recycle
Normal/keep 可以手动调整,默认为 normal。达梦 keep 的是表空间。
Fast/recycle 系统自动管理,缓存的是临时页和回滚页。
读多页:当数据库中有大量全表扫描时,可以调整该参数 MULTI_PAGE_GET_NUM
select para_name,para_value from v$dm_ini where para_name =‘MULTI_PAGE_GET_NUM’;
数据缓冲区和共享内存池没有关系,数据缓冲区满,淘汰最近很少使用的数据页。
(4)重做日志缓冲区
缓存的是重做日志记录的信息。单位是页。
参数:RLOG_BUF_SIZE

重做日志缓冲区与共享内存池没有关系,重做日志缓冲区满就向操作系统申请内存。
(5)SQL 缓冲区
缓存的是 sql、sql 结果集,包,如果 sql 类别比较多,应该适当调整 SQL 缓冲区。
参数:CACHE_POOL_SIZE
select para_name,para_value from v$dm_ini where para_name =‘CACHE_POOL_SIZE’;
SQL 缓冲区不够用时,会向共享内存池申请内存。
(6)字典缓冲区
字典缓冲区缓存的是数据字典的信息。包含表、列、权限相关的信息。当数据库中存在大表
的表、分区表时,应该适当调整字典缓冲区。

参数:DICT_BUF_SIZE当字典缓冲区不够用时,会向共享内存池申请内存。
(7)排序区
缓存的是临时数据,排序的数据。
参数:SORT_BUF_SIZE

当排序区不足时,会向共享内存池申请内存。
3.4DM8 线程结构
监听线程
在数据库服务器端,监听来自客户端的连接请求,并转给工作线程。
IO 线程
将磁盘上的数据页加载到数据缓冲区中,将数据缓冲区中的脏页在一定机制(数据缓冲区满,
执行检查点、数据库关闭)下更新到磁盘中。
日志刷新线程
将重做日志缓冲区中的记录在一定机制(事务提交、执行检查点)下更新到重做日志文件中。
日志归档线程
将重做日志记录在覆盖之前,拷贝到归档路径下做副本。
日志重做线程
主要用于数据库的实例恢复
调度线程
检查系统级的时间触发器;
清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
自动执行检查点;
会话超时检测;
必要时执行数据更新页刷盘;唤醒等待的工作线程;

                           达梦社区  https://eco.dameng.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值