DM数据库逻辑存储结构解析

一、数据库与实例:从概念分离到协同工作

在DM7及之后的版本中,数据库(Database)与实例(Instance)被明确区分为两个不同的实体,这一区分是理解DM架构的基础。

  • 数据库 指的是存储在磁盘上的物理数据集合,包括数据文件、日志文件、控制文件等。
  • 实例 则是运行在内存中的一套工具集合,由后台进程/线程和共享内存组成,负责操作数据库。

简单来说,数据库是静态的存储,而实例是动态的执行环境。通常情况下,一个实例一次只能操作一个数据库,但在DMDSC(共享存储集群)等高可用架构下,多个实例可以同时访问同一个数据库,实现了更高的可用性与负载均衡。

二、逻辑存储层次:从表空间到数据页

DM数据库采用层次化的逻辑存储结构,所有数据最终都存储在数据文件中,并通过以下层级进行组织与管理:

  1. 数据库 → 由一个或多个表空间构成
  2. 表空间 → 包含一个或多个数据文件
  3. 数据文件 → 由一个或多个簇组成
  4. → 由多个簇组成,并可跨数据文件分布
  5. → 由一组连续的数据页组成,且仅属于一个数据文件
  6. 页(块) → 最小的存储与I/O单元

这种结构既保证了存储的灵活性,也提升了磁盘空间的利用效率。

三、表空间:数据组织的逻辑容器

表空间是数据库中最顶层的逻辑存储单元,所有数据库对象在逻辑上都属于某个表空间。DM数据库在初始化时会自动创建四个基础表空间:

表空间 类型 主要用途
SYSTEM 普通表空间 存放数据字典信息,禁止用户创建表和索引
ROLL 普通表空间 自动维护,用于存储DML操作前的数据,保障读一致性
MAIN 混合表空间 默认表空间(SYSDBA),可同时存储普通表与HUGE表,初始化包含MAIN.DBF文件
TEMP 普通表空间 存放SQL执行过程中产生的临时数据,如排序中间结果、临时表等

建议:在生产环境中,建议为业务数据创建独立的表空间,或直接使用MAIN表空间,以提升管理清晰度与性能。

四、数据页与记录:最小的存储单元

  • 页(Page) :大小为4KB、8KB、16KB或32KB,默认为8KB,一经创建不可更改。每个数据页包括页头、数据区、空闲空间和行偏移数组,是I/O操作的基本单位。
  • 记录(Record):即数据表中的一行。记录必须完整存储在一个数据页内,因此其长度不能超过页大小的一半。

性能调优参数:FILLFACTOR

FILLFACTOR(填充因子)是数据页级别的优化参数,用于平衡存储空间利用率和更新性能:

  • 设置范围:0--100,表示数据页初始化后可用于插入的空间百分比。
  • 工作机制:剩余空间(100-FILLFACTOR)预留用于后续更新,避免因数据扩展导致页分裂。
  • 使用建议
    • 若数据多读少更新,可设为较高值(如90-100)以提升存储密度;
    • 若数据频繁更新,建议适当降低(如70-80),减少页分裂带来的I/O开销。

五、簇与段:空间分配的逻辑单元

  • 簇(Extent):由同一文件中连续的16、32或64个数据页组成(默认为16页)。数据库自动管理簇的分配与释放,空间不足时自动扩展数据文件。
  • 段(Segment) :由多个簇组成,可跨数据文件分布。分为三类:
    1. 数据段:存储表或索引数据,创建对象时自动建立;
    2. 临时段:存放SQL执行中的中间结果,系统自动管理;
    3. 回滚段:保存事务回滚和读一致性所需的数据,由系统自动维护。

六、总结

DM数据库通过清晰的逻辑存储层次------数据库→表空间→段→簇→页→记录,实现了数据的高效组织与存取。理解这些基本概念,有助于管理员更好地进行数据库规划、性能调优与日常维护。无论是普通业务系统还是高可用的DMDSC集群,这一存储逻辑都为DM数据库的稳定与高效运行提供了坚实的基础。

提示:可通过 SELECT * FROM V$TABLESPACE; 查看表空间详细信息,进一步结合实践加深理解。

相关推荐
天空属于哈夫克32 小时前
企业微信 API 开发:外部群自动化推送的技术实现
数据库·microsoft
脑子慢且灵2 小时前
写项目之数据库使用有感
数据库·er图
倒流时光三十年2 小时前
PostgreSQL 高级特性. FILTER RETURNING 特性
数据库·postgresql·filter·sql调优
填满你的记忆2 小时前
【从零开始——Redis 进化日志|Day1】初见 Redis,开启内存加速之旅
数据库·redis·缓存
么么...2 小时前
掌握 MySQL:约束、范式与视图详解
数据库·经验分享·sql·mysql
盒马coding2 小时前
高性能MySQL到PostgreSQL异构数据库转换工具MySQL2PG
数据库·mysql·postgresql
摇滚侠2 小时前
RocketMQ 教程丨深度掌握 MQ 消息中间件,RocketMQ 集群,笔记 28-38
数据库·笔记·rocketmq
Gobysec2 小时前
Goby 漏洞安全通告|MongoDB Zlib 信息泄露漏洞(CVE-2025-14847)
数据库·安全·mongodb·漏洞检测工具
醉风塘2 小时前
深入解析与彻底解决:MongoDB“about to fork child process”启动故障
数据库·mongodb