【赵渝强老师】达梦数据库的逻辑存储结构

简介: 本文介绍了达梦数据库的存储结构,包括逻辑和物理存储两部分。逻辑存储结构由数据库(Database)、表空间(Tablespaces)、段(Segments)、簇(Cluster)和页(Page)组成。数据库是最大逻辑单元,包含所有表、索引等;表空间由数据文件组成,用于存储对象;段由簇构成,簇包含连续的数据页;页是最小存储单元。文中还提供了查询表空间、段和页大小的SQL语句,并附有视频讲解和示意图。

b301.png

达梦数据库由硬盘上的文件组成,而要读写数据需要通过达梦实例来完成。那么,达梦数据库是如何存储数据的呢?要搞清楚这个问题,就需要理解什么是达梦数据库的存储结构。达梦数据库的存储结构是由逻辑存储结构和物理存储结构组成。一般来说数据库无论是关系型数据库,还是NoSQL数据库在存储结构上,都是通过逻辑存储结构来管理物理存储结构。


视频讲解如下:


在逻辑存储结构中,达梦数据库为数据库中的所有对象分配逻辑空间,并将数据存放在数据文件中。在达梦数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。通过这种细分,可以使得达梦数据库能够更加高效地控制磁盘空间的利用率。下图展示了这些数据结构之间的关系。

image.png


下面分别对这些逻辑单元进行介绍。


一、 Database(数据库)


Database是DM 8中最大的逻辑单元,它是按照数据结构来组织、存储和管理数据的仓库。所有的表、索引、存储过程、触发器等都被包含在了Database中。


二、 Tablespaces(表空间)


在DM数据库中,表空间由一个或者多个数据文件组成。DM数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。在创建DM数据库时,会自动创建5个表空间:SYSTEM表空间、ROLL表空间、MAIN表空间、TEMP表空间和HMAIN表空间。执行下面的语句将可以查看当前达梦数据库中的表空间的信息。


SQL> select id,name from v$tablespace;
# 输出的信息如下:
行号     ID          NAME    
---------- ----------- --------
1          0           SYSTEM
2          1           ROLL
3          3           TEMP
4          4           MAIN
5          5           BOOKSHOP
6          6           DMHR
6 rows got
# 下面的语句将查看大表空间的信息。
SQL> SELECT * FROM V$HUGE_TABLESPACE;
# 输出的信息如下:
行号    ID   NAME   PATHNAME                            
------ ---- ------ ------------------------------------ 
1       4    MAIN   /home/dmdba/dmdbms/data/DAMENG/HMAIN


下表列举了达梦数据库中的表空间信息以及它们各自在作用。

image.png

每一个用户都有一个默认的表空间。对于SYS、SYSSSO、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。如果用户在创建表的时候,指定了存储表空间,则该用户创建的表和索引也将存储在指定的表空间中。一般情况下,建议用户自己创建一个表空间来存放业务数据,或者将数据存放在默认的用户表空间MAIN中。


三、 Segments(段)


段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不同文件的簇,即一个段可以跨越不同的文件。而一个簇以及该簇所包含的数据页则只能来自一个文件,是连续的16或者32个数据页。由于簇的数量是按需分配的,数据段中的不同簇在磁盘上不一定连续。


段可以有数据段、临时段和回滚段,而最常用的段就是数据段。下面的语句将查询达梦数据库中段的信息。


SQL> select owner,segment_name,segment_type from dba_segments;
# 输出的信息如下:
行号     OWNER SEGMENT_NAME         SEGMENT_TYPE
---------- ----- ------------------ ------------
......                              
44         SYS   INDEX33555441       INDEX
45         SYS   INDEX33555439       INDEX
46         DMHR  INDEX33555573       INDEX
47         DMHR  INDEX33555569       INDEX
48         DMHR  INDEX33555568       INDEX
49         DMHR  INDEX33555566       INDEX
50         DMHR  INDEX33555563       INDEX
51         DMHR  INDEX33555560       INDEX
52         DMHR  INDEX33555557       INDEX
53         DMHR  INDEX33555555       INDEX
54         OTHER COMPANYHOLIDAYS     TABLE
55         DMHR  REGION                TABLE
56         DMHR  CITY                  TABLE
57         DMHR  LOCATION             TABLE
58         DMHR  DEPARTMENT           TABLE
59         DMHR  JOB                   TABLE
60         DMHR  EMPLOYEE             TABLE
61         DMHR  JOB_HISTORY         TABLE
62         SYS   POLICY_GROUPS       TABLE
63         SYS   POLICIES              TABLE
64         SYS   POLICY_CONTEXTS     TABLE
......
# 这里的TABLE段和INDEX段都是数据段的一种类型。


四、 Cluster(簇)


簇是数据页的上级逻辑单元,由同一个数据文件中16个或32个或64个连续的数据页组成。在DM数据库中,簇的大小由用户在创建数据库时指定,默认大小为16。假定某个数据文件大小为32MB,页大小为8KB,则共有32MB/8KB/16=256个簇,每个簇的大小为8K*16=128K。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。


五、 Page(页)


数据页(也称数据块)是DM数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在DM数据库中,页大小可以为4KB、8KB、16KB或者32KB,用户在创建数据库时可以指定,默认大小为8KB,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变。通过执行下面的语句可以查看当前数据库页的大小。


SQL> select page();
# 输出的信息如下:
行号     PAGE()     
---------- -----------
1          8192
已用时间: 0.937(毫秒). 执行号:2620


相关文章
|
3月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
122 5
|
1月前
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
2月前
|
存储 关系型数据库 MySQL
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
139 5
|
3月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
127 12
|
3月前
|
SQL 关系型数据库 数据库
【赵渝强老师】创建PostgreSQL的数据库
本文介绍了在PostgreSQL中通过SQL命令“create database”创建数据库的方法。首先查询系统目录pg_database以查看现有数据库集合,然后使用“create database”命令创建新数据库,并了解其在$PDATA/base目录下对应的文件夹生成。最后重新查询数据库集合确认创建结果,附带视频讲解便于理解操作步骤及注意事项。
|
3月前
|
存储 运维 监控
【赵渝强老师】TiDB数据库从零开始
《TiDB数据库从零开始》是一门系统介绍TiDB分布式数据库的课程,共11章。内容涵盖TiDB体系架构、安装部署、用户安全管理、数据库对象操作、事务与锁机制、备份恢复、数据迁移与同步、TiSpark/TiProxy/TiFlash组件使用,以及监控诊断与故障处理。通过视频讲解和详细文本,帮助学员全面掌握TiDB的核心功能与应用场景。
116 9
|
4月前
|
SQL 缓存 分布式数据库
【赵渝强老师】达梦数据库的线程结构
达梦数据库采用单进程、多线程结构,利用对称服务器架构实现高效资源利用与可扩展性。其核心线程类型包括监听线程(管理客户端连接)、I/O线程(处理数据页读写)、工作线程(执行数据操作)、调度线程(定时任务管理)和日志刷新线程(确保REDO日志刷盘)。通过合理分工与同步机制,达梦数据库实现了高性能与稳定性。视频讲解进一步详细介绍了各线程的功能与协作方式。
【赵渝强老师】达梦数据库的线程结构
|
3月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
114 9
|
4月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
165 10
|
4月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回查询
本文介绍了Oracle数据库的闪回查询(Flashback Query)功能及其实际应用。闪回查询通过`AS OF`子句,结合时间戳或SCN号,可查询历史数据状态,帮助分析数据差异。文中通过具体示例演示了如何使用闪回查询:创建测试表、记录当前SCN号、更新数据并提交事务,最后通过闪回查询获取历史数据。附带的视频和代码块详细展示了操作步骤与结果。
136 4

热门文章

最新文章

OSZAR »