注册
达梦数据库DEFAULT_FILLFACTOR参数验证
技术分享/ 文章详情 /

达梦数据库DEFAULT_FILLFACTOR参数验证

🌊Amaharashi 2026/07/31 166 0 0

基础环境信息

操作系统:CentOS 7 (x86_64);
数据库版本:DM8;

整体思路

1.查询现有表的FILLFACTOR;
2.查询系统参数DEFAULT_FILLFACTOR的当前值;
3.对比表和系统参数值,判断表是否继承;
4.创建带索引的新表,验证索引是否继承;
5.得出结论。

验证过程

查看当前DEFAULT_FILLFACTOR全局参数:
SELECT PARA_NAME, PARA_VALUE FROM VDM_INI WHERE PARA_NAME='DEFAULT_FILLFACTOR'; 将全局默认填充因子修改为90: SP_SET_PARA_VALUE(1,'DEFAULT_FILLFACTOR',90); 确认参数修改成功: SELECT PARA_NAME, PARA_VALUE FROM VDM_INI WHERE PARA_NAME=‘DEFAULT_FILLFACTOR’;
创建测试对象:
CREATE TABLE TEST_FILL_DEMO(ID INT PRIMARY KEY, NAME VARCHAR(50));
CREATE INDEX IDX_TEST_NAME ON TEST_FILL_DEMO(NAME);
在参数设置为90的情况下,创建表、索引对象。通过查询这些对象的实际填充因子,判断哪些类型继承了系统参数。
查询表的填充因子:
SELECT
TAB.NAME AS TABLE_NAME,
BITAND(TAB.INFO1, 0xFF000000) / 16777216 AS FILLFACTOR
FROM
SYSOBJECTS TAB
WHERE
TAB.SUBTYPE$ = ‘UTAB’
AND TAB.NAME = ‘TEST_FILL_DEMO’;
image.png
查询配置文件路径:
SELECT
DBMS_METADATA.GET_DDL(‘INDEX’, ‘IDX_TEST_NAME’, USER) AS INDEX_DDL
FROM DUAL;
image.png

重新创建一个带索引的新表,保证验证过程干净、不受之前操作干扰。表名、索引名都使用新名称,避免命名冲突或缓存影响。
DROP TABLE IF EXISTS TEST_FILL_DEMO2;
CREATE TABLE TEST_FILL_DEMO2 (
ID INT,
NAME VARCHAR(50)
);
CREATE INDEX IDX_DEMO2_NAME ON TEST_FILL_DEMO2(NAME);
COMMIT;
查询第二个表的填充因子:
SELECT
TAB.NAME AS TABLE_NAME,
BITAND(TAB.INFO1, 0xFF000000) / 16777216 AS FILLFACTOR
FROM
SYSOBJECTS TAB
WHERE
TAB.SUBTYPE$ = ‘UTAB’
AND TAB.NAME = ‘TEST_FILL_DEMO2’;
查询第二个索引的填充因子:
SELECT
DBMS_METADATA.GET_DDL(‘INDEX’, ‘IDX_DEMO2_NAME’, USER) AS INDEX_DDL
FROM DUAL;
如果两者均为90,说明表和索引都继承系统参数;如果表为90、索引为0,说明索引不继承。

结论

image.png
当DEFAULT_FILLFACTOR=90时:
新创建的表:FILLFACTOR =90;新创建的索引FILLFACTOR=90。
在达梦数据库DM8中,DEFAULT_FILLFACTOR全局参数对表和索引均默认生效。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服