外观
DM 物理架构
达梦数据库的物理架构主要包括以下组件:
- 数据文件:存储数据库的实际数据
- 日志文件:记录数据库的修改操作
- 控制文件:存储数据库的元数据和状态信息
- 参数文件:存储数据库的配置参数
- 临时文件:存储临时数据
数据文件
数据文件是达梦数据库中最主要的物理文件,用于存储数据库的实际数据,包括表数据、索引数据、大对象数据等。
数据文件的结构
达梦数据库的数据文件采用了页(Page)、区(Extent)、段(Segment)的层次结构:
- 页(Page):最小的存储单位,默认大小为8KB,可配置为4KB、8KB、16KB或32KB
- 区(Extent):由连续的页组成,是分配存储空间的基本单位,大小为64个页
- 段(Segment):由多个区组成,是表、索引等对象的存储单位
数据文件的类型
达梦数据库的数据文件包括以下类型:
- 系统数据文件:存储系统表空间的数据,包括SYSTEM、ROLL、TEMP等系统表空间
- 用户数据文件:存储用户表空间的数据,如MAIN表空间和自定义表空间
- 临时数据文件:存储临时表空间的数据,用于排序、哈希等临时操作
数据文件的管理
达梦数据库的数据文件管理包括以下方面:
- 数据文件的创建:使用CREATE TABLESPACE语句创建表空间时,会自动创建对应的数据文件
- 数据文件的扩展:当表空间空间不足时,数据文件会自动扩展,可配置扩展大小和最大大小
- 数据文件的收缩:使用ALTER TABLESPACE语句可以收缩数据文件,释放未使用的空间
- 数据文件的备份和恢复:使用备份工具可以对数据文件进行备份和恢复
日志文件
日志文件用于记录数据库的所有修改操作,确保事务的持久性和可恢复性。达梦数据库的日志包括重做日志(Redo Log)和归档日志(Archive Log)。
重做日志
重做日志记录了数据库的所有修改操作,用于崩溃恢复和实例恢复。
- 重做日志的结构:重做日志以日志文件组的形式组织,每个日志文件组包含一个或多个日志文件
- 重做日志的切换:当当前日志文件组满时,会自动切换到下一个日志文件组
- 重做日志的循环使用:重做日志文件组采用循环使用的方式,当所有日志文件组都满时,会覆盖最早的日志文件组
归档日志
归档日志是重做日志的副本,用于数据库的介质恢复和时间点恢复。
- 归档模式:达梦数据库支持归档模式和非归档模式,生产环境建议使用归档模式
- 归档日志的生成:在归档模式下,当重做日志切换时,会将当前日志文件的内容归档到归档目录
- 归档日志的管理:归档日志可以自动管理,也可以手动管理,需要定期清理过期的归档日志
日志缓冲区
日志缓冲区是内存中的一块区域,用于临时存储重做日志记录,提高日志写入效率。
- 日志缓冲区的大小:可通过参数配置,默认大小为16MB
- 日志缓冲区的刷新:当日志缓冲区满、事务提交或定期(默认3秒)时,会将日志缓冲区的内容刷新到磁盘
- 日志写入方式:支持同步写入和异步写入,生产环境建议使用同步写入,确保数据安全
控制文件
控制文件是达梦数据库的重要物理文件,存储了数据库的元数据和状态信息,包括:
- 数据库的名称和ID
- 数据文件和日志文件的位置和状态
- 数据库的创建时间和检查点信息
- 归档日志的位置和状态
控制文件的特点
- 控制文件的数量:达梦数据库支持多个控制文件,建议至少创建2个控制文件,存储在不同的磁盘上,提高可靠性
- 控制文件的大小:控制文件的大小相对较小,通常在几MB到几十MB之间
- 控制文件的更新:当数据库的结构或状态发生变化时,控制文件会自动更新
- 控制文件的备份:控制文件需要定期备份,以防止控制文件损坏导致数据库无法启动
控制文件的管理
- 控制文件的创建:数据库创建时自动创建控制文件
- 控制文件的添加:使用ALTER DATABASE语句可以添加新的控制文件
- 控制文件的备份:使用BACKUP CONTROLFILE语句可以备份控制文件
- 控制文件的恢复:如果控制文件损坏,可以使用备份的控制文件进行恢复
参数文件
参数文件用于存储数据库的配置参数,控制数据库的运行行为。达梦数据库的参数文件包括:
dm.ini 文件
dm.ini是达梦数据库的主要参数文件,存储了数据库的核心配置参数,包括:
- 数据库的基本配置,如实例名、端口号、字符集等
- 内存配置,如缓冲区大小、共享池大小等
- 存储配置,如表空间、数据文件等
- 性能配置,如并发连接数、查询优化参数等
- 安全配置,如审计、加密等
dmarch.ini 文件
dmarch.ini是归档配置文件,用于配置归档日志的存储位置和方式。
dmcluster.ini 文件
dmcluster.ini是集群配置文件,用于配置集群环境的相关参数。
dm_svc.conf 文件
dm_svc.conf是客户端配置文件,用于配置客户端的连接参数。
进程结构
达梦数据库的进程结构包括以下主要进程:
主进程(DBW)
- 功能:数据库写进程,负责将数据缓冲区中的脏数据写入数据文件
- 工作机制:定期扫描数据缓冲区,将脏数据写入数据文件
- 配置参数:可通过参数DB_WRITER_THREADS配置DBW进程的数量
日志写进程(LGWR)
- 功能:日志写进程,负责将日志缓冲区中的重做日志记录写入重做日志文件
- 工作机制:当事务提交、日志缓冲区满或定期(默认3秒)时,将日志缓冲区的内容写入重做日志文件
检查点进程(CKPT)
- 功能:检查点进程,负责更新控制文件和数据文件头的检查点信息
- 工作机制:定期执行检查点,将内存中的脏数据写入数据文件,更新检查点信息
- 配置参数:可通过参数CKPT_INTERVAL配置检查点的间隔时间
归档进程(ARCH)
- 功能:归档进程,负责将重做日志文件的内容归档到归档目录
- 工作机制:在归档模式下,当重做日志切换时,ARCH进程会将当前日志文件的内容归档
监听进程(DMSERVER)
- 功能:监听客户端的连接请求,建立和管理客户端连接
- 工作机制:监听指定的端口,接受客户端的连接请求,创建会话进程处理客户端请求
会话进程
- 功能:会话进程,负责处理客户端的SQL请求
- 工作机制:每个客户端连接对应一个会话进程,处理SQL语句的解析、优化和执行
内存结构
达梦数据库的内存结构包括以下主要组件:
数据缓冲区
- 功能:缓存数据文件中的数据页,提高数据访问效率
- 类型:包括缓冲区池(BUFFER_POOL)、大对象缓冲区(LARGE_BUFFER_POOL)等
- 配置参数:可通过参数BUFFER和LARGE_BUFFER配置缓冲区的大小
日志缓冲区
- 功能:缓存重做日志记录,提高日志写入效率
- 配置参数:可通过参数LOG_BUFFER配置日志缓冲区的大小
共享池
- 功能:缓存SQL语句、执行计划、数据字典等共享数据
- 类型:包括SQL缓存(SQL_CACHE)、计划缓存(PLAN_CACHE)、字典缓存(DICT_CACHE)等
- 配置参数:可通过参数SHARED_POOL_SIZE配置共享池的大小
工作区
- 功能:用于排序、哈希、聚合等操作的临时内存区域
- 配置参数:可通过参数SORT_BUF_SIZE配置工作区的大小
版本差异
DM7 物理架构
DM7的物理架构相对简单,主要包括:
- 数据文件采用页、区、段的层次结构
- 支持重做日志和归档日志
- 主要进程包括DBW、LGWR、CKPT、ARCH等
- 内存结构包括数据缓冲区、日志缓冲区、共享池等
DM8 物理架构
DM8在DM7的基础上进行了扩展和优化,主要改进包括:
- 增加了对大页内存的支持,提高内存访问效率
- 改进了日志写入机制,提高日志写入性能
- 增加了多租户支持,每个租户有独立的系统表空间
- 增强了对SSD等新型存储设备的支持
- 改进了内存管理机制,提高内存利用率
最佳实践
物理架构设计建议
- 合理配置数据文件:将数据文件分布在不同的磁盘上,避免I/O瓶颈
- 合理配置日志文件:将日志文件放在高速存储设备上,提高日志写入性能
- 使用归档模式:生产环境建议使用归档模式,确保数据的可恢复性
- 配置多个控制文件:将控制文件存储在不同的磁盘上,提高可靠性
- 合理配置内存参数:根据系统配置和业务需求,调整内存参数,提高性能
性能优化建议
- 使用大页内存:配置大页内存可以提高内存访问效率
- 优化磁盘I/O:使用RAID、SSD等技术提高磁盘I/O性能
- 调整检查点频率:根据业务需求调整检查点频率,平衡性能和恢复时间
- 优化日志写入:使用高速存储设备存放日志文件,配置合适的日志缓冲区大小
- 监控磁盘空间:定期监控数据文件和归档日志的磁盘空间,避免空间不足
可靠性建议
- 定期备份控制文件:防止控制文件损坏导致数据库无法启动
- 定期备份归档日志:将归档日志备份到离线存储设备,防止数据丢失
- 配置多路归档:将归档日志同时归档到多个位置,提高可靠性
- 定期检查数据库完整性:使用DB_CHECK工具定期检查数据库的完整性
常见问题(FAQ)
Q1: 达梦数据库的数据文件默认大小是多少?
A1: 达梦数据库的数据文件默认大小为128MB,可在创建表空间时指定初始大小。
Q2: 如何查看达梦数据库的数据文件和日志文件信息?
A2: 可以通过以下方式查看:
- 查询系统视图:
SELECT * FROM V$DATAFILE;查看数据文件信息 - 查询系统视图:
SELECT * FROM V$LOGFILE;查看日志文件信息 - 使用DM管理工具,在表空间和日志文件管理界面查看
Q3: 达梦数据库的重做日志文件大小如何配置?
A3: 可以在创建数据库时指定重做日志文件的大小,也可以使用ALTER DATABASE语句修改重做日志文件的大小。建议将重做日志文件大小配置为1GB-2GB,以减少日志切换频率。
Q4: 如何配置达梦数据库的归档模式?
A4: 可以通过以下步骤配置归档模式:
- 修改dm.ini文件,将ARCH_INI参数设置为1
- 创建dmarch.ini文件,配置归档路径和方式
- 重启数据库实例
- 使用ALTER DATABASE ARCHIVELOG语句启用归档模式
Q5: 达梦数据库的内存结构包括哪些部分?
A5: 达梦数据库的内存结构包括:
- 数据缓冲区:缓存数据文件中的数据页
- 日志缓冲区:缓存重做日志记录
- 共享池:缓存SQL语句、执行计划、数据字典等
- 工作区:用于排序、哈希、聚合等操作
Q6: 如何优化达梦数据库的磁盘I/O性能?
A6: 优化达梦数据库磁盘I/O性能的方法包括:
- 将数据文件和日志文件分布在不同的磁盘上
- 使用RAID技术提高磁盘I/O性能
- 使用SSD等高速存储设备
- 合理配置数据文件的大小和扩展方式
- 调整检查点频率,平衡性能和恢复时间
