高效的内存管理
根据系统中子模块的不同功能,对内存采用了不同的管理模式。
1. 内存池
小片内存的申请与释放频繁发出系统调用,可能会引起线索切换,降低系统运行效率。内存池一次向操作系统申请一片较大内存,当系统在运行过程中需要申请内存时,则在共享内存池内进行申请,当用完该内存时,再释放掉,即归还给内存池。系统对内存池有效的管理,使小片内存的申请与释放不会对系统影响太大。
2. 数据缓冲区
为缓解全局缓冲区的访问瓶颈问题,进一步的提高效率,DM7采用了多缓冲区机制,将全局缓冲区划成多个分片。数据页按照其页号,进入各自缓冲区分片。每个缓冲区分片有自己的临界区,访问不同的缓冲区分片,不会导致访问冲突。这种机制可以降低全局数据缓冲区并发访问的冲突概率。
3. 字典缓冲区
每次对数据库的操作都会涉及到数据字典信息,访问数据字典信息的效率直接影响到相应的操作效率,DM为字典设置了其专有的缓冲区。为保证事物的隔离性,DM中的执行计划并不是直接使用字典缓冲区的内容,而是根据字典缓冲区的内容生成一份自己独有的字典对象并使用。
高可用性
1. 快速的自动故障恢复
DM7服务器始终只是一个进程,无论采用何种保护措施,总是不可能完全避免系统故障的情况,如操作系统崩溃、机器掉电等。当外部故障消除后,DM服务器重新启动,需要快速消除当机造成的破坏,恢复到故障前状态,重新为客户端提供数据服务。而帮助数据库系统从故障中恢复,避免数据丢失和完整性破坏的工具,就是DM7的REDO日志系统。
DM7改造了REDO日志的管理策略。采用逻辑LSN值替代了原有的物理文件地址映射到LSN生成机制,极大简化了REDO日志的处理逻辑,从而也提高了日志自身的稳定性与可靠性。REDO日志可以压缩存储,有效减少IO代价。
在故障恢复时采用了并行处理机制执行REDO日志,有效减少重做花费的时间。
2. 基于redo日志的主备系统
主备系统是DM数据库管理系统提高容灾能力的重要手段。系统由一台主机与一或多台备机构成。主机提供正常的数据处理服务,备机则时刻保持与主机的数据同步。一旦主机发生故障,备机中的一台立刻可以切换成为新的主机,继续提供服务器。主备机的切换是通过服务器、观察器与接口自动完成的,对客户端几乎完全透明。
DM7的主备系统基于优化后的REDO日志系统开发,功能更加稳定可靠。主备机间传递压缩的日志数据,通信效率大大提升。
DM7主备环境搭建非常简单。首先在主机生成完全备份,还原到备机上。然后连接主备机器。主机就可以利用归档日志自动与备机同步数据。主备系统搭建就此完成。利用备份文件与归档日志,主备环境的搭建不再需要繁琐的操作或冗长的时间等待。
服务器新增了配置模式,DM7服务器系统可以在不停机状态下在单机系统与主备系统间平滑变换,其在特殊环境下的实用性不言而喻。
借助改进的字典缓存机制,DM7的主备系统可以提供全功能的数据库支持。客户端访问主机系统没有任何的功能限制,而备机同样可以作为主机的只读镜像,支持客户端的只读查询请求。
3. 可靠的备份与恢复
DM数据库系统可以提供数据库或整个服务器的冷/热备份以及对应的还原功能,达到数据库数据的保护和迁移。
DM7在原有数据库级备份/还原功能基础上,新增了表级物理备份功能。
表级备份操作将指定表B树的所有数据页保存在备份文件中,并在控制页中记录其关联信息。还原时,从目标数据段中逐个分配新页,复制内容,并按照记录中关联信息重新构造还原出新的B树。
表级物理备份兼具了物理备份的快速性和逻辑备份的针对性,具有很强的实用性。表级备份可以作为特定对象数据迁移与快速装载的解决方案。基于表级备份技术的进行数据库的备份还原,还可以达到数据库文件的重组与收缩目的。
4. 逻辑日志
DM7在物理的REDO日志之外,又添加了逻辑日志。逻辑日志记录数据库表上的所有插入、删除、更新等数据变化。可以指定部分表记录逻辑日志,也可以设置所有表记录。借助逻辑日志,DM7系统可以提供操作分析、数据重演以及数据复制等高级功能。
5. 高级复制
DM7的复制功能基于逻辑日志实现。主机将逻辑日志发往从机,而从机根据日志模拟事务与语句重复主机的数据操作。相对语句级的复制,逻辑日志可以更准确地反映主机数据的时序变化,从而减少冲突,提高数据复制的一致性。