学习达梦数据库的基本概念

本文详细探讨了达梦数据库与Oracle的相似之处,包括逻辑架构(如表空间、段、簇和页)、物理结构特点,以及数据块设计。作者指出达梦数据库的FILLFACTOR类似于Oracle的PCTFREE,强调了簇和页大小的重要性。

这两天在梳理达梦数据库的一些知识点与运维经验,于是又把达梦的一些资料拿出来翻了翻。进入50岁之后,记忆力已经下降的厉害了,2019年系统学习过的达梦的一些概念,有些现在都开始模糊了,必须重新学习才行了。

达梦数据库的基础架构和一些概念都和Oracle十分相近,在业内还传说着达梦当年获得过Oracle 9i的代码,并在此基础上开发了达梦数据库。事实上这可能只是一个传说而已,盗窃别人的代码这种事,对于一个大型数据库厂商来说是不可能的事情。我和达梦的研发团队做过多次的交流,十分佩服这批国内数据库研发的坚守者。正是这批人的坚守,中国国产数据库才没有完全沦为开源套壳。不管怎么说,达梦数据库和Oracle在概念上十分相近,达梦的开发者全盘吸收了Oracle的一些理念,不管如何,作为RDBMS毫无疑问的王者,追随是一种不错的选择。

达梦数据库的逻辑概念和物理概念与Oracle十分接近。物理上的达梦数据库是一系列物理文件的组合,这和Oracle完全一致。从逻辑上看,达梦分为表空间、段、簇、页,这几个结构。一个表空间中有一个或者多个文件。一个簇是一系列连续的页的组合,簇不能跨物理文件。簇基本上相当于oracle的extent。二多个同构的簇构成了段,这个段和Oracle的segment一致。

达梦的默认表空间,SYSTEM是和Oracle的SYSTEM表空间一样的,存放关键的数据字典以及数据库的一些系统信息。ROLL表空间是回滚表空间,存储回滚段的。TEMP表空间和Oracle的TEMP也类似,存访临时表、临时段等。MAIN表空间是一个默认数据存储的表空间,如果用户创建表的时候没有指定表空间,会存储到MAIN中,这个有点类似Oracle的SYSAUX,不过也不完全相同。HMAIN是达梦独有的,用于存储默认的HUGE TABLE,当创建HUGE TABLE的时候,如果没有制定表空间,可以存储在这里。每一个用户都有一个默认的表空间。对于SYS、SYSSSO、SYSAUDITOR系统用户,默认的用户表空间是SYSTEM,SYSDBA的默认表空间为MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定MAIN表空间为用户默认的表空间。

达梦的数据记录是存储在页中的,因为一条达梦的数据记录不能跨页,因此记录的总长度收到页的限制,达梦7规定一条记录的总长度不能大于页大小的一半。达梦的页的概念与Oracle的BLOCK是类似的,页的大小从4K到32K,默认的页大小是8K,页大小在数据库创建时确定,一旦确定,不能修改。

达梦的页的结构如上图,由页头控制信息,数据,空闲空间和行偏移数组构成。这个结构和Oracle也很相似,不过并不相同。Oracle的空闲空间位于页头和数据之间,而达梦的空闲空间位于数据和行偏移数组之间。可以看出,达梦的数据是从块头往下分配的,而Oracle的空间是从底部向上分配的。这是完全不同的。另外oracle的块尾还有校验位,不过达梦没有。为什么会这样呢?达梦是采用double write机制来避免块断裂的,Oracle没有块断裂预防机制,因此需要靠块尾的校验字节来校验块是否一致。从数据块的结构我们可以看出达梦基于Oracle 9i代码的说法只能是一个传说了,数据块结构对数据库的整体影响是十分巨大的,一般数据库是很少会去轻易修改数据块结构的。Oracle目前的数据块结构的基础来自于Oracle 8,这二十多年,都没有做过大改。

既然是学习Oracle数据块的设计思路,达梦的页中也一共存在类似PCTFREE这样的对数据库性能影响很大的参数,不错,达梦叫FILLFACTOR,其作用也是和Oracle的PCTFREE一样的。通过这个参数让某个页不会因为INSERT而写的太满,从而导致今后UPDATE时候产生块的分裂。用过ORACLE数据库的DBA应该比较容易理解这个参数,以及这个参数对高性能高并发数据库性能的影响。

好了,今天就学习到这里,达梦数据库在逻辑架构上的与Oracle的相似性,是DBA的福音,Oracle DBA可以比较容易理解达梦数据库,在做数据库优化的时候,也可以参考部分Oracle的经验。

簇是数据页的上级逻辑单元,由同一个数据文件中16个或32个连续的数据页组成。在DM数据库中,簇的大小由用户在创建数据库时指定,默认大小为16。假定某个数据文件大小为32MB,页大小为8KB,则共有32MB/8KB/16=256个簇,每个簇的大小为8K*16=128K。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。对于比较大的表来说,16个PAGE的簇是有点小的,一个8K页的簇不过128K,哪怕设置簇为32个连续页,也不过是256K。因此如果你创建比较大的数据库的时候,一定修改簇大小为32。

<think>首先,用户的问题是:“我想了解达梦数据库的基本操作方法 请问达梦数据库 基本操作指南 入门教程”。这翻译成英文是“I want to understand the basic operation methods of Dameng Database. Please provide a basic operation guide or introductory tutorial for Dameng Database.” 根据系统级指令: 1. 所有行内数学表达式必须使用 `$...$` 格式。但在这个上下文中,用户的问题是关于数据库操作的,可能不涉及数学表达式。所以,我需要在回答中如果有数学相关内容时使用它。 2. 独立公式使用 `$$...$$` 格式并单独成段。同样,可能不适用。 3. LaTeX语法正确:确保任何数学公式正确。 4. 使用中文回答:整个回答必须用中文。 5. 生成相关问题:在回答末尾,生成相关问题。 6. 回答中引用的段落末尾自然地添加引用标识:例如 [^1]。参考提供的引用: - 引用[1]: 达梦数据库入门语法:从基础到进阶的指南... - 引用[2]: 达梦数据库入门使用。1.1 下载与安装... - 引用[3]: 达梦数据库入门指南(二)- 达梦数据库概念说明... - 引用[4]: 达梦数据库-基本操作... 用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在这个对话中,这是第一次交互,所以没有上一次的问题。我需要基于这些引用来构建回答。 用户可见层指令:回答结构清晰,帮助用户逐步解决问题,保证真实可靠。 用户需求是了解达梦数据库的基本操作方法,包括入门指南。所以,我应该基于引用提供结构化指南。 结构化回答: 1. **介绍**:简要介绍达梦数据库。 2. **安装和配置**:基于引用[2],介绍下载与安装。 3. **基本概念**:基于引用[3],解释数据库概念。 4. **基本操作**:基于引用[4],包括创建表空间、用户操作等。 5. **常见操作示例**:提供一些基本SQL命令示例。 6. **进阶提示**:简要提到进阶内容。 7. **生成相关问题**:在末尾添加相关问题。 确保回答真实可靠:使用引用作为来源,并在引用段落末尾添加引用标识。 例如,在描述安装过程时,添加 [^2]。 现在,构建回答大纲: - **步骤1: 下载和安装** - 描述从官网下载安装包,运行脚本等。引用[2]。 - **步骤2: 基本概念** - 解释物理存储结构如配置文件、控制文件、数据文件等。引用[3]。 - **步骤3: 基本操作** - 创建表空间、修改表空间大小、创建用户等。引用[4]。 - **步骤4: 示例操作** - 提供一些SQL命令示例。 - **总结** - **相关问题** 在回答中,自然地添加引用标识。例如:"达梦数据库的安装过程包括解压安装包并执行安装脚本 [^2]." 由于用户提到“尽可能多的参考用户上一次的问题”,但这是第一次,所以忽略。 最终,生成相关问题: 基于主题,如: 1. 如何优化达梦数据库性能? 2. 达梦数据库的备份和恢复方法? 3. 达梦数据库在哪些场景中应用广泛? 用中文写回答。</think>### 达梦数据库基本操作指南与入门教程 达梦数据库(Dameng Database)是一款国产的高性能、高可靠性的数据库管理系统,广泛应用于政府、金融、电信等行业。它支持标准SQL语法,并提供了丰富的管理工具。为了帮助您快速入门,我将从安装配置开始,逐步介绍基本概念、常见操作和实用示例。本指南基于达梦数据库的官方文档和常见实践,确保内容真实可靠。 --- ### 步骤1: 下载与安装 达梦数据库的安装是入门的第一步。您需要从达梦数据库官方网站下载安装包(支持Windows和Linux系统)。安装过程简单高效: - **解压安装包**:下载后解压到指定目录。 - **执行安装脚本**:在Linux系统中运行 `dm_install.sh` 脚本;在Windows系统中运行安装程序 `.exe`。 - **配置参数**:根据提示设置安装路径、服务端口(默认端口5236)、管理员账户(如SYSDBA)和密码。安装完成后,系统会自动创建初始数据库实例 [^2]。 安装成功后,您可以通过命令行工具(如 `disql`)或图形界面工具(如DM管理工具)连接到数据库。 --- ### 步骤2: 理解基本概念 在操作前,了解达梦数据库的核心物理存储结构是必要的。这些结构确保数据的安全性和高效管理: - **配置文件**:用于设置数据库参数,如内存分配和日志级别。 - **控制文件**:记录数据文件和日志文件的分布信息。 - **数据文件**:存储用户实际数据,通常以 `.dbf` 后缀结尾。 - **日志文件**:包括重做日志(记录事务变化)和归档日志(用于备份恢复)。 - **表空间**:逻辑存储单元,用于组织数据文件。例如,系统表空间(SYSTEM)用于存储元数据,用户表空间用于存储应用数据 [^3]。 理解这些概念有助于后续操作更高效。 --- ### 步骤3: 基本操作指南 达梦数据库的基本操作包括管理表空间、用户和SQL命令。以下以常见操作为例,使用SQL语句实现(所有命令需在 `disql` 或管理工具中执行)。 #### 3.1 表空间操作 表空间是数据存储的基础单元。创建和管理表空间可优化存储。 - **创建表空间**:例如,创建一个名为 `TEST_1` 的表空间,并指定数据文件大小。 ```sql CREATE TABLESPACE TEST_1 DATAFILE 'TEST.dbf' SIZE 100M; ``` - **修改表空间大小**:如果数据增长,可扩展文件大小。 ```sql ALTER TABLESPACE TEST_1 RESIZE DATAFILE 'TEST.dbf' TO 200M; -- 将文件扩展到200MB [^4] ``` - **删除表空间**:谨慎操作,避免数据丢失。 ```sql DROP TABLESPACE TEST_1; ``` #### 3.2 用户管理 用户是数据库访问的入口,需关联表空间和权限。 - **创建用户**:指定用户名、密码和默认表空间。 ```sql CREATE USER test_user IDENTIFIED BY "password123" DEFAULT TABLESPACE TEST_1; ``` - **授权用户**:赋予用户权限,如查询或修改表。 ```sql GRANT SELECT, INSERT ON TABLE my_table TO test_user; -- 授予查询和插入权限 ``` - **删除用户**:需先撤销权限。 ```sql DROP USER test_user; ``` #### 3.3 数据表操作 表是存储数据的核心对象。以下是基本SQL示例。 - **创建表**:定义表结构和字段类型。 ```sql CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), salary DECIMAL(10,2) ) TABLESPACE TEST_1; -- 指定表空间 ``` - **插入数据**:向表中添加记录。 ```sql INSERT INTO employees (id, name, salary) VALUES (1, '张三', 5000.00); ``` - **查询数据**:检索信息。 ```sql SELECT * FROM employees WHERE salary > 4000; ``` - **更新和删除**:修改或移除数据。 ```sql UPDATE employees SET salary = 5500.00 WHERE id = 1; DELETE FROM employees WHERE id = 1; ``` #### 3.4 备份与恢复 定期备份是保障数据安全的关键。 - **简单备份**:使用命令行工具导出数据。 ```bash dexp USERID=SYSDBA/SYSDBA FILE=backup.dmp DIRECTORY=/backup -- 导出数据库 ``` - **恢复数据**:导入备份文件。 ```bash dimp USERID=SYSDBA/SYSDBA FILE=backup.dmp -- 导入数据库 ``` --- ### 步骤4: 进阶提示 掌握基本操作后,可探索进阶功能: - **性能优化**:通过调整配置文件参数(如内存缓存大小)提升查询速度。 - **事务管理**:使用 `COMMIT` 和 `ROLLBACK` 确保数据一致性。 - **监控工具**:利用DM管理工具实时查看数据库状态。 达梦数据库支持与标准SQL兼容,学习曲线平缓。建议参考官方文档或培训课程深化知识 [^1]。 --- ### 相关问题 为了帮助您深入学习,我生成了以下相关问题: 1. 达梦数据库如何实现高可用性和故障恢复? 2. 在达梦数据库中,如何优化SQL查询性能? 3. 达梦数据库在云计算环境中的部署方法有哪些? 如果您有具体场景(如数据迁移或性能调优),请提供更多细节,我将为您详细解答!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值