首页 > 数据库 > 国内数据库 > 达梦DM8的表空间管理
表空间的概念:
每个DM 数据库都是由一个或者多个表空间组成,表空间是一个逻辑的存储容器,它位于逻辑结构的顶层,用于存储数据库中的所有数据,表空间的数据被物理存放在数据文件中,一个表空可以包含一个或多个文件。也就是说表空是逻辑的概念我们可以把它理解为(容器)里面可以存放数据文件、表、索引等。
DM8 的逻辑架构为表空间- 段- 簇(相当于oracle 的区)- 页(相当于oracle 的块)。
使用表空间的优点:
Ø 能够隔离用户数据和数据字典,减少对system 表空间的I/O 争用;
Ø 可以把不同表空间的数据文件存储在不同的磁盘上,把负载均衡分布到各个磁盘上减少I/O 争用;
Ø 隔离来自不同应用程序的数据,能够执行基于表空间的备份和恢复同时可以避免一个应用程序的表空间脱机而影响其他应用程序的运行;
接下来我们介绍一下DM8 数据库中默认的都有哪些表空间以及它们的作用是什么:
# 我们可以通过命令查看系统内所有表空间的名字。

SYSTEM (系统表空间,数据字典)
ROLL (回滚表空间,支持 MVCC )
TEMP (临时表空间,临时数据)
MAIN (数据库默认的表空间)
HMAIN (存放列存数据)
# 注意:SYSTEM 、ROLL 、TEMP 不能手动创建。
规划表空间:

举例1 :我们测试创建一个表空间初始化大小为31M 。
# 此时我们看到使用31M 作为初始化大小是不能建立成功的接下来我来解释一下这是为什么?
DM8 建立初始化数据文件大小时有一个硬性规定,那就是数据文件的初始化大小一定要是页大小的4096 倍否则就会报以上的错误。
SQL> select page;
行号 PAGE
---------- -----------
1 8192
# 使用这个命令可以找到我们在配置数据库实例时多选的页大小参数,注意此参数显示单位为字节在换算时我们需要将此参数转化为KB 进行计算。

# 我们也可以通过DMmanager 管理工具来查看数据库实例的初始化信息来找到页的大小。

# 这样我们就得到了在页大小为8KB 的情况下,数据文件的初始化大小的最小参数值。
# 注意:不是说得到了这个大小就必须按照这个大小来设置,只是不能比这个参数小,只要比这个参数大任何初始化值都是可以的。

举例2 :我们在建立一个表空间将表空间初始大小为32NB 并设置最大大小为1024MB

举例3 :在我们定义数据文件最大大小时指定自动扩展的大小

# 注意:参考例1 和例2 我们需要注意的问题是在设定最大大小或者是不设置最大大小,而且定义的自增长选项时(autoextend ),我们需要设置自增长的大小,如果不设置的话每次自增长的参考值为簇大小的值,这样的话在进行数据文件扩展时会造成频繁的I/O 从而降低数据库的性能。

# 查找页大小的方法
举例4 :创建多数据文件

# 创建多个数据文件使用逗号分隔。
表空间的管理
表空间的状态分为online offline (system 、roll 、temp 不能脱机)
# 注意达梦数据库的表空间没有只读的概念。

查看表空间的状态

# 通过dba_tablespaces 可以查看表空间的状态信息,status 列代表状态0 代表online ,1 代表offline 。
表空间大小不足的解决办法:
方法1 :普通表空间增加数据文件
方法2 :临时表空间大小不足
# 查看一下临时表空间的默认信息。临时表空间的数据文件默认的大小是10 单位是MB 。
方法3 :回滚表空间不足

# 更改数据文件大小

# 添加数据文件
表空间的删除
在工作中可能会遇到某个表空间不在需要的情况这时可能会考虑删除表空间,那么在删除表空间的时候DM 数据库需要注意以下这两种情况:
第一种是表空间没有任何对象,这样的情况下我们可以直接删除

第二种情况就是表空间在有数据的情况下进行删除

# 在进行删除存在数据的表空间时就会出现如下报错,这是达梦数据出于安全考虑防止 数据库管理员误操作。达梦数据库如果需要将表空间删掉首先要将表空间的数据删掉然后在删除表空间。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69978820/viewspace-2703723/ ,如需转载,请注明出处,否则将追究法律责任。