在DM数据库中,页大小可以为4KB、8KB、16KB或者32KB,用户在创建数据库时可以根据实际情况选择需要的页大小,默认大小为8KB,该参数值在数据库初始化完成后,是无法进行更改,只能重新初始化数据库进行更改。
初始化页大小的选择不仅影响表空间数据文件的大小选择,也会对表中每个字段及每条记录产生限制,页大小对字符数据类型实际最大长度及每行记录、表空间数据文件大小的影响如下表所示:
数据库页大小 | 每个字符类型字段实际最大长度(字节) | 每行记录除大字段外其他字段总长度(字节) | 表空间单个数据文件的最小(MB)/最大大小(MB) |
---|---|---|---|
4K | 1938 | 2047 | 16/ 8388608 |
8K | 3878 | 4095 | 32/ 16777216 |
16K | 8000 | 8195 | 64/ 33554432 |
32K | 8188 | 16176 | 128/ 67108864 |
达梦数据库是以簇为最小的物理单元,在为数据库分配物理存储空间,簇大小可以设置为16或者32,默认为16,每个簇的大小=页大小x页数(簇大小参数设置的值),所以页大小设置越大,数据文件的物理大小就会越大,在系统运行时,每次从磁盘调入内存的数据单位也就越大,磁盘的IO量也就越大,所以在规划数据库前期,需要慎重考虑数据库页大小及簇大小的选择,测试环境为DM8环境32KB初始页大小:
SQL> select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_PAGE_SIZE';
LINEID para_name para_value
---------- ---------------- ----------
1 GLOBAL_PAGE_SIZE 32768
used time: 9.836(ms). Execute id is 4.
SQL> select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_EXTENT_SIZE';
LINEID para_name para_value
---------- ------------------ ----------
1 GLOBAL_EXTENT_SIZE 32
used time: 8.067(ms). Execute id is 5.
页大小为32KB,表空间的最小大小为128MB,如果表空间小于128MB将无法成功创建表空间,测试过程如下。
SQL> create tablespace test datafile 'dmtest.dbf' size 127;
create tablespace test datafile 'dmtest.dbf' size 127;
[-2410]:Error in line: 1
Data file [/opt/dmdbms/data/dmtest.dbf] size is invalid.
used time: 0.633(ms). Execute id is 0.
SQL>
SQL> create tablespace test datafile 'dmtest.dbf' size 128;
executed successfully
used time: 77.732(ms). Execute id is 11.
当表空间的大小小于128MB时,无法完成表空间创建,并打印出了size is invalid错误提示,其实页大小限制的是单个数据文件的最小大小,因为每个表空间至少需要包含一个数据文件,所以也就对表空间的大小形成了限制,如下测试过程,我们给dmtest表空间添加数据文件:
SQL> alter tablespace dmtest add datafile 'dmtest01.dbf' size 127;
alter tablespace dmtest add datafile 'dmtest01.dbf' size 127;
[-2410]:Error in line: 1
Data file [/opt/dmdbms/data/dmtest01.dbf] size is invalid.
used time: 0.737(ms). Execute id is 0.
SQL> alter tablespace dmtest add datafile '/opt/dmdbms/data/dmtest01.dbf' size 128;
executed successfully
used time: 61.880(ms). Execute id is 12.
文章
阅读量
获赞