达梦数据库的逻辑存储结构
达梦数据库的逻辑存储存储结构分为:页、簇、段、数据文件、表空间。
页: 是最小的逻辑单元, 是数据库最小的分配单位。 ( 默认 8k,(4k,8k,16k,32k),数据页包括 4 个部分: 页头控制信息, 数据, 空闲空间, 行偏移数组。
簇: 由磁盘上连续的页组成, 一个簇总是在一个数据文件中, 由 16 或是 32 个页组成。
段: 一组簇的集合, 是簇的上级逻辑单位, 一个段可以跨多个数据文件, 一个簇只能在一个数据文件中。
数据文件: 由一个或多个段组成。
表空间: 是一个或多个数据文件组成, 最多由 256 个数据文件。
页大小和簇大小可以在数据库的安装时进行配置。
查看数据库中的表空间
通过dba_tablespaces视图可以看到数据库中的所有表空间,BLOCK_SIZE就是占用的页数。BLOCK_SIZE*页大小(8K)就是表空间当前的大小,6400*8/1024=50, YY表空间的大小即为50M。
SQL> select tablespace_name,extent_management,block_size from dba_tablespaces;
行号 TABLESPACE_NAME EXTENT_MANAGEMENT BLOCK_SIZE
---------- --------------- ----------------- --------------------
1 SYSTEM NULL 2944
2 ROLL NULL 16384
3 TEMP NULL 1280
4 MAIN NULL 16384
5 BOOKSHOP NULL 19200
6 DMHR NULL 16384
7 TBS NULL 32768
8 YY NULL 6400
9 HMAIN NULL NULL
9 rows got
查看表空间中的数据文件
通过dba_data_files 视图可以看到每个表空间对应的数据文件,一个表空间可以有多个数文件,同时可以看到数据文件的大小,多个数据文件的情况数据文件大小累加就是表空间的大小。
SQL> select tablespace_name,file_name,round(bytes/1024/1024) mb from dba_data_files order by 1,2;
行号 TABLESPACE_NAME FILE_NAME MB
---------- --------------- --------------------------- ---
1 BOOKSHOP /dm8/data/PROD/BOOKSHOP.DBF 150
2 DMHR /dm8/data/PROD/DMHR.DBF 128
3 MAIN /dm8/data/PROD/MAIN.DBF 128
4 ROLL /dm8/data/PROD/ROLL.DBF 128
5 SYSTEM /dm8/data/PROD/SYSTEM.DBF 23
6 TBS /dm8/data/PROD/TBS01.DBF 128
7 TBS /dm8/data/PROD/TBS02.DBF 128
8 TEMP /dm8/data/PROD/TEMP.DBF 10
8 rows got
段的管理
在数据库中一个段就是一个数据库对象,一张表、一个索引都是一个段。通过dba_segments 视图可以查看,每条记录时一个段,EXTENTS是段所使用的簇的数量,BLOCKS是占用的页数量。通过计算可以看到簇的大小为16,也就是一个簇中包含16个页。
SQL> select tablespace_NAME,segment_name,segment_type,extents,blocks from dba_segments where tablespace_name='MAIN';
行号 TABLESPACE_NAME SEGMENT_NAME SEGMENT_TYPE EXTENTS BLOCKS
---------- --------------- ---------------- ------------ -------------------- --------------------
1 MAIN T_IDX06 INDEX 2 32
2 MAIN MINDEX$_1109_SEQ INDEX 2 32
3 MAIN MINDEX$_1109 INDEX 2 32
4 MAIN INDEX33555560 INDEX 2 32
5 MAIN INDEX33555555 INDEX 2 32
6 MAIN INDEX33555543 INDEX 2 32
7 MAIN INDEX33555539 INDEX 3 48
创建表空间
SQL> create tablespace yy datafile '/dm8/data/PROD/yy1.DBF' size 50;
操作已执行
已用时间: 36.214(毫秒). 执行号:263967.
SQL>
修改数据文件大小
SQL> alter tablespace yy datafile '/dm8/data/PROD/yy1' autoextend on next 5 maxsize 100;
操作已执行
已用时间: 4.154(毫秒). 执行号:263922.
SQL>
为表空间增加数据文件
SQL> alter tablespace yy add datafile '/dm8/data/PROD/yy2' size 50;
操作已执行
已用时间: 5.892(毫秒). 执行号:263924.
SQL>
为数据文件改名
修改数据文件名,需要将表空间调整为离线。
SQL> ALTER TABLESPACE yy OFFLINE;
操作已执行
已用时间: 121.400(毫秒). 执行号:263925.
SQL> alter tablespace yy rename datafile '/dm8/data/PROD/yy2' to '/dm8/data/PROD/yy2.dbf';
操作已执行
已用时间: 750.828(毫秒). 执行号:263926.
SQL> ALTER TABLESPACE yy ONLINE;
操作已执行
已用时间: 4.275(毫秒). 执行号:263927.
SQL>
修改表空间名称
SQL> ALTER TABLESPACE yy RENAME TO QQ;
操作已执行
已用时间: 46.915(毫秒). 执行号:263928.
SQL> select tablespace_name,extent_management from dba_tablespaces;
行号 TABLESPACE_NAME EXTENT_MANAGEMENT
---------- --------------- -----------------
1 SYSTEM NULL
2 ROLL NULL
3 TEMP NULL
4 MAIN NULL
5 BOOKSHOP NULL
6 DMHR NULL
7 TBS NULL
8 QQ NULL
9 HMAIN NULL
9 rows got
已用时间: 0.622(毫秒). 执行号:263929.
达梦技术社区地址:https://eco.dameng.com