达梦数据库页(数据块)大小的区别和选择

1、DM页的概念

页/数据页(也称数据块),是DM数据库中最小的数据存储单元,类似于oracle的block数据块。页大小可以为4KB、8KB、16KB、32KB,DM数据库在初始化时,如果不指定大小默认是8KB,数据库初始化后,页大小不能随意改变。通常建议16KB或32KB。
在这里插入图片描述
**

2、下面举例说明页大小的区别

采用默认的 8KB 页初始化数据库,创建表时字段长度指定为 8188,观察插入数据情况。
**

示例1:插入单个字段

create table test1 (a varchar2(8188),b varchar(8188));

–测试插入单子字段,长度为3800,是可以成功插入的。
declare
v varchar2(8188);
v_sql varchar2(8188);
begin
v:=‘a’;
for i in 1…3800
loop
v:=v||‘a’;
end loop;
v_sql:=‘insert into test1(a) VALUES (’’’||v||’’’)’;
print(v_sql);
execute immediate v_sql;
commit;
end
–再次插入,就会报错,记录超过长度。
declare
v varchar2(8188);
v_sql varchar2(8188);
begin
v:=‘a’;
for i in 1…4000
loop
v:=v||‘a’;
end loop;
v_sql:=‘insert into test1(a) VALUES (’’’||v||’’’)’;
print(v_sql);
execute immediate v_sql;
commit;
end

**

示例2:插入行总长度

–测试每行记录总长度,长度为1900,是可以成功插入的。
declare
v varchar2(8188);
v_sql varchar2(8188);
begin
v:=‘a’;
for i in 1…1900
loop
v:=v||‘a’;
end loop;
v_sql:=‘insert into test1(a,b) VALUES (’’’||v||’’’,’’’||v||’’’)’;
print(v_sql);
execute immediate v_sql;
commit;
end
–再次插入,就会报错,记录超过长度。
declare
v varchar2(8188);
v_sql varchar2(8188);
begin
v:=‘a’;
for i in 1…2000
loop
v:=v||‘a’;
end loop;
v_sql:=‘insert into test1(a,b) VALUES (’’’||v||’’’,’’’||v||’’’)’;
print(v_sql);
execute immediate v_sql;
commit;
end
在这里插入图片描述

3、页大小的结论:

1)数据库初始化时,选择了默认的8KB页大小,在后期使用时,即便字符类型的最大长度设置为最大值8188,实际插入长度及每行记录的总长度会受到page_size大小的限制;
2)页大小选择建议:根据实际生产环境的需求,选择页大小16KB,甚至更大的32KB;
3)如果生产环境为中小型业务系统,选择默认的8KB,更大的页,空间占用率也更大。

更多推荐