达梦数据库页(数据块)大小的区别和选择
达梦数据库页(数据块)大小的区别和选择1、DM页的概念页/数据页(也称数据块),是DM数据库中最小的数据存储单元,类似于oracle的block数据块。页大小可以为4KB、8KB、16KB、32KB,DM数据库在初始化时,如果不指定大小默认是8KB,数据库初始化后,页大小不能随意改变。通常建议16KB或32KB。2、下面举例说明页大小的区别采用默认的 8KB 页初始化数据库,创建表时字段长度指定为
达梦数据库页(数据块)大小的区别和选择
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,更大的页,空间占用率也更大。
更多推荐
所有评论(0)