Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【赵渝强老师】达梦数据库的逻辑存储结构

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

原创
作者头像
赵渝强老师
发布于 2025-03-24 01:19:37
发布于 2025-03-24 01:19:37
560
举报
文章被收录于专栏:达梦数据库达梦数据库

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

视频讲解如下:

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

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

一、 Database(数据库)

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

二、 Tablespaces(表空间)

在DM数据库中,表空间由一个或者多个数据文件组成。DM数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。在创建DM数据库时,会自动创建5个表空间:SYSTEM表空间、ROLL表空间、MAIN表空间、TEMP表空间和HMAIN表空间。

执行下面的语句将可以查看当前达梦数据库中的表空间的信息。

代码语言:sql
AI代码解释
复制
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

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

每一个用户都有一个默认的表空间。对于SYS、SYSSSO、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。如果用户在创建表的时候,指定了存储表空间,则该用户创建的表和索引也将存储在指定的表空间中。

一般情况下,建议用户自己创建一个表空间来存放业务数据,或者将数据存放在默认的用户表空间MAIN中。

三、 Segments(段)

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

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

代码语言:sql
AI代码解释
复制
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
AI代码解释
复制
SQL> select page();

# 输出的信息如下:
行号     PAGE()     
---------- -----------
1          8192

已用时间: 0.937(毫秒). 执行号:2620.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【赵渝强老师】达梦数据库的物理存储结构
达梦数据库由硬盘上的文件组成,而要读写数据需要通过达梦实例来完成。那么,达梦数据库是如何存储数据的呢?要搞清楚这个问题,就需要理解什么是达梦数据库的存储结构。达梦数据库的存储结构是由逻辑存储结构和物理存储结构组成。一般来说数据库无论是关系型数据库,还是NoSQL数据库在存储结构上,都是通过逻辑存储结构来管理物理存储结构。
赵渝强老师
2025/03/24
700
【赵渝强老师】达梦数据库的物理存储结构
【赵渝强老师】达梦数据库的数据库对象
达梦数据库中包含各种数据库对象,主要分为两大类型:基本数据库对象和复杂数据库对象。下面分别进行介绍。
赵渝强老师
2025/03/23
740
【赵渝强老师】达梦数据库的数据库对象
【赵渝强老师】PostgreSQL的逻辑存储结构
PostgreSQL的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都存放在相关的系统目录表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。下图展示了PostgreSQL数据库的逻辑存储结构。
赵渝强老师
2024/11/25
1270
【赵渝强老师】PostgreSQL的逻辑存储结构
【赵渝强老师】MySQL的InnoDB存储引擎
InnoDB是当前MySQL的默认的存储引擎,也是互联网等公司数据库存储引擎的不二选择。InnoDB的特性如下:
赵渝强老师
2024/08/13
1300
【赵渝强老师】MySQL的InnoDB存储引擎
第7章_InnoDB数据存储结构
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
2180
第7章_InnoDB数据存储结构
【赵渝强老师】MySQL InnoDB的段、区和页
MySQL的InnoDB存储引擎的逻辑存储结构和Oracle大致相同,所有数据都被逻辑地存放在一个空间中,我们称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。InnoDB存储引擎的逻辑存储结构大致如下图所示。
赵渝强老师
2024/11/13
1420
【赵渝强老师】MySQL InnoDB的段、区和页
【基础概念】YashanDB逻辑存储结构
YashanDB通过提供逻辑存储结构,使数据库存储空间管理更加灵活快捷。与物理存储结构不同,逻辑存储结构对操作系统是透明的,所有的访问都需要通过数据库提供的接口。
用户11498166
2025/02/20
140
Oracle存储结构
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
7170
Oracle存储结构
MySQL提升笔记(4)InnoDB存储结构
这一节本来计划开始索引的学习,但是在InnoDB存储引擎的索引里,存在一些数据存储结构的概念,这一节先了解一下InnodDB的逻辑存储结构,为索引的学习打好基础。
三分恶
2021/04/22
7120
堂妹问我:innodb是如何插入数据的?
上周系统上线,发现数据量大的时候查询较慢。经过调查发现,负责该功能的妹妹建表时没有指定主键。
敖丙
2021/01/08
8190
堂妹问我:innodb是如何插入数据的?
MYSQL Innodb逻辑存储结构
这几天在读《MySQL技术内幕 InnoDB存储引擎》,对 Innodb逻辑存储结构有了些了解,顺便也记录一下;
SEian.G
2021/03/03
8920
【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下:
赵渝强老师
2024/08/11
6730
【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
ORACLE体系结构逻辑结构-表空间、段、区和数据块
实例是指在内存中分配的一块共享内存区域(SGA)和一组后台进程(或线程),它们用于访问和控制数据库。3实例是Oracle数据库的运行时环境,它是数据库的动态部分,它可以启动和关闭,也可以有多个实例同时运行。
程序员子龙
2024/01/09
2150
ORACLE体系结构逻辑结构-表空间、段、区和数据块
【赵渝强老师】达梦数据库的目录结构
达梦数据库安装成功后,通过使用Linux的tree命令可以非常方便地查看DM 8的目录结构。
赵渝强老师
2025/03/14
570
【赵渝强老师】达梦数据库的目录结构
【赵渝强老师】达梦数据库的内存结构
数据库管理系统是一种对内存申请和释放操作频率很高的软件,如果每次对内存的使用都使用操作系统函数来申请和释放,效率会比较低,加入自己的内存管理是DBMS系统所必须的。通常内存管理系统会带来以下好处:
赵渝强老师
2025/03/25
830
【赵渝强老师】达梦数据库的内存结构
猿创征文|国产数据库---达梦应用技巧及使用案例
第一步:DM8数据库的.iso镜像文件上传到redhat 7操作系统的 /opt/dm8.iso目录下
芯动大师
2022/11/15
5660
数据库的存储结构
记录是按照行存储的,但是数据库的读取不是以行为单位,否则一次读取只能处理一行,效率很低。因此数据库,无论是读一行,还是读取多行,都是将这些行所在的页进行加载。数据管理存储空间的基本单位是页(Page)
王小明_HIT
2020/11/03
2.8K0
数据库的存储结构
Mysql存储引擎 innodb
从InnoDB存储引擎的存储结构看,所有数据都被逻辑地放在一个空间中,称之为表空间(tablespace)、区(extent)、页(page)组成,页在一些文档中也被称之为块(block)。
thierryzhou
2022/12/02
4.9K1
YashanDB存储引擎
存储引擎是数据库核心部件之一,YashanDB通过不同的存储引擎适应不同的应用场景,以获得面向在线交易场景的高效事务处理能力,面向实时分析场景的事务与分析均衡能力,以及面向海量稳态数据分析场景的高性能。
用户11512874
2025/02/19
470
【DB笔试面试524】在Oracle中,逻辑结构由哪几个部分组成?
Oracle中逻辑结构包括表空间(TABLESPACE)、段(SEGMENT)、区(EXTENT)和块(BLOCK)。数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由Oracle块构成,即块→区→段→表空间→数据库。
AiDBA宝典
2019/09/29
1.6K0
【DB笔试面试524】在Oracle中,逻辑结构由哪几个部分组成?
相关推荐
【赵渝强老师】达梦数据库的物理存储结构
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文