学习达梦数据库的基本概念

这两天在梳理达梦数据库的一些知识点与运维经验,于是又把达梦的一些资料拿出来翻了翻。进入50岁之后,记忆力已经下降的厉害了,2019年系统学习过的达梦的一些概念,有些现在都开始模糊了,必须重新学习才行了。

达梦数据库的基础架构和一些概念都和Oracle十分相近,在业内还传说着达梦当年获得过Oracle 9i的代码,并在此基础上开发了达梦数据库。事实上这可能只是一个传说而已,盗窃别人的代码这种事,对于一个大型数据库厂商来说是不可能的事情。我和达梦的研发团队做过多次的交流,十分佩服这批国内数据库研发的坚守者。正是这批人的坚守,中国国产数据库才没有完全沦为开源套壳。不管怎么说,达梦数据库和Oracle在概念上十分相近,达梦的开发者全盘吸收了Oracle的一些理念,不管如何,作为RDBMS毫无疑问的王者,追随是一种不错的选择。

达梦数据库的逻辑概念和物理概念与Oracle十分接近。物理上的达梦数据库是一系列物理文件的组合,这和Oracle完全一致。从逻辑上看,达梦分为表空间、段、簇、页,这几个结构。一个表空间中有一个或者多个文件。一个簇是一系列连续的页的组合,簇不能跨物理文件。簇基本上相当于oracle的extent。二多个同构的簇构成了段,这个段和Oracle的segment一致。

达梦的默认表空间,SYSTEM是和Oracle的SYSTEM表空间一样的,存放关键的数据字典以及数据库的一些系统信息。ROLL表空间是回滚表空间,存储回滚段的。TEMP表空间和Oracle的TEMP也类似,存访临时表、临时段等。MAIN表空间是一个默认数据存储的表空间,如果用户创建表的时候没有指定表空间,会存储到MAIN中,这个有点类似Oracle的SYSAUX,不过也不完全相同。HMAIN是达梦独有的,用于存储默认的HUGE TABLE,当创建HUGE TABLE的时候,如果没有制定表空间,可以存储在这里。每一个用户都有一个默认的表空间。对于SYS、SYSSSO、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。

达梦的数据记录是存储在页中的,因为一条达梦的数据记录不能跨页,因此记录的总长度收到页的限制,达梦7规定一条记录的总长度不能大于页大小的一半。达梦的页的概念与Oracle的BLOCK是类似的,页的大小从4K到32K,默认的页大小是8K,页大小在数据库创建时确定,一旦确定,不能修改。

达梦的页的结构如上图,由页头控制信息,数据,空闲空间和行偏移数组构成。这个结构和Oracle也很相似,不过并不相同。Oracle的空闲空间位于页头和数据之间,而达梦的空闲空间位于数据和行偏移数组之间。可以看出,达梦的数据是从块头往下分配的,而Oracle的空间是从底部向上分配的。这是完全不同的。另外oracle的块尾还有校验位,不过达梦没有。为什么会这样呢?达梦是采用double write机制来避免块断裂的,Oracle没有块断裂预防机制,因此需要靠块尾的校验字节来校验块是否一致。从数据块的结构我们可以看出达梦基于Oracle 9i代码的说法只能是一个传说了,数据块结构对数据库的整体影响是十分巨大的,一般数据库是很少会去轻易修改数据块结构的。Oracle目前的数据块结构的基础来自于Oracle 8,这二十多年,都没有做过大改。

既然是学习Oracle数据块的设计思路,达梦的页中也一共存在类似PCTFREE这样的对数据库性能影响很大的参数,不错,达梦叫FILLFACTOR,其作用也是和Oracle的PCTFREE一样的。通过这个参数让某个页不会因为INSERT而写的太满,从而导致今后UPDATE时候产生块的分裂。用过ORACLE数据库的DBA应该比较容易理解这个参数,以及这个参数对高性能高并发数据库性能的影响。

好了,今天就学习到这里,达梦数据库在逻辑架构上的与Oracle的相似性,是DBA的福音,Oracle DBA可以比较容易理解达梦数据库,在做数据库优化的时候,也可以参考部分Oracle的经验。

簇是数据页的上级逻辑单元,由同一个数据文件中16个或32个连续的数据页组成。在DM数据库中,簇的大小由用户在创建数据库时指定,默认大小为16。假定某个数据文件大小为32MB,页大小为8KB,则共有32MB/8KB/16=256个簇,每个簇的大小为8K*16=128K。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。对于比较大的表来说,16个PAGE的簇是有点小的,一个8K页的簇不过128K,哪怕设置簇为32个连续页,也不过是256K。因此如果你创建比较大的数据库的时候,一定修改簇大小为32。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值