在DM数据库中,页大小可以为 4K、 8K、 16K 和32K,用户在创建数据库时可以根据实际情况选择需要的页大小, 默认大小为 8KB,该参数值在数据库初始化完成后,是 无法进行更改的,只能重新初始化数据库进行更改
初始化页大小的选择对表空间数据文件的大小,对表中字段的长度,表里的每行记录的最大值都有一个限制
达梦数据库是以簇为最小的物理单元,为数据库分配物理存储空间,簇大小可以设置为16或者32,默认为16,每个簇的大小=页大小x页数(簇大小参数设置的值),所以页大小设置越大,数据文件的物理大小就会越大,在系统运行时,每次从磁盘调入内存的数据单位也就越大,磁盘的IO量也就越大,所以在规划数据库前期,需要慎重考虑数据库页大小及簇大小的选择。
下面是一个对应的参考表
因部署环境、数据库版本、字符选择等因素,表中数据会存在一定的差异
数据库页大小 |
每个字符类型字段实际最大长度(字节) |
每行记录除大字段外其他字段总长度(字节) |
表空间单个数据文件的最小(MB)/最大大小(MB) |
4k |
1900 |
2000 |
16/ 8388608 |
8k |
3900 |
4000 |
32/ 16777216 |
16k |
8000 |
8000 |
64/ 33554432 |
32k |
8188 |
16000 |
128/ 67108864 |
1、查看数据库版本和对应数据库页大小;
2、 页大小对表空间的影响测试
数据库版本为8.1.1.144,数据库页大小为8KB,创建的数据库表空间大小不能小于32MB
create tablespace "test" datafile '/dm8/dmdbms/data/PORD/test.DBF' size 31 CACHE = NORMAL;
create tablespace "test" datafile '/dm8/dmdbms/data/PORD/test.DBF' size 32 CACHE = NORMAL;
小结:在所创建的表空间小于32KB时报:大小无效
2、 页大小对表的字段大小的影响测试
数据库版本为8.1.1.144,数据库页大小为8KB,表字段的大小最大值为8188字节
create table t1(a varchar2(8189));
create table t1(a varchar2(8188));
小结:在所差创建的表字段最大长度是报:数据精度超出范围
3、 页大小对表的单条记录最大长度的影响测试
create table t2(a varchar2(8188),b varchar2(8188));
declare
v_a varchar2(8188);
v_sql varchar2(8188);
begin
v_a:='a';
for i in 1..1938 loop
v_a:=v_a||'a';
end loop;
v_sql:='insert into t2(a,b) values ('''||v_a||''','''||v_a||''')';
execute immediate v_sql;
commit;
end;
create table t2(a varchar2(8188),b varchar2(8188));
declare
v_a varchar2(8188);
v_sql varchar2(8188);
begin
v_a:='a';
for i in 1..1938 loop
v_a:=v_a||'a';
end loop;
v_sql:='insert into t2(a,b) values ('''||v_a||''','''||v_a||''')';
execute immediate v_sql;
commit;
end;
小结:当行数据库长度超出最大值是报:记录超长