注册
达梦优化之-ALTER TABLE更改表
专栏/培训园地/ 文章详情 /

达梦优化之-ALTER TABLE更改表

唐僧洗头爱飘柔 2023/12/08 1774 0 0
摘要

达梦优化之-ALTER TABLE更改表

1.前言

最近本人项目上刚好遇到一个业务需求
需求说明:
1)多张大表含已有字段上百个,需求在线增加字段(alter table xxx add column)
2)开发人员测试环境增加一个字段耗时7分钟,数据量仅仅2千万
3)难点:生产环境数据量7千万,业务为7*24小时高并发

2.优化手段

达梦数据库提供一个动态会话级参数:ALTER_TABLE_OPT,该参数默认为:0
image.png
--查询目前值
SELECT PARA_NAME,PARA_VALUE,FILE_VALUE FROM V$DM_INI WHERE PARA_NAME='ALTER_TABLE_OPT';
--修改该参数为3
SP_SET_PARA_VALUE(1,'ALTER_TABLE_OPT',3);

ALTER SYSTEM SET 'ALTER_TABLE_OPT'=3 BOTH;
说明:该参数修改后,只对新建立连接的会话生效,原本存在的会话无效。
参数优化调整后,在线添加字段从原来的7分钟提升至毫秒级完成。

3.参数详解

1)对于添加列,当设置INI参数ALTER_TABLE_OPT为1时,添加列采用查询插入实现,可能会导致ROWID的改变;
2)ALTER_TABLE_OPT 为 2 时,系统开启快速加列功能,对于没有默认值或者默认值为 NULL 的新列,系统内部会标记为附加列,能够达到瞬间加列的效果,此时记录 ROWID 不会改变,若有默认值且默认值不为NULL,则默认值的存储长度不能超过 4000 字节,此时仍旧采取查询插入实现;
3)ALTER_TABLE_OPT 为 3 时,系统会开启快速加列功能,允许指定新增列的默认值,系统会为该列设置附加列标记,查询表中已存在的数据时,会自动为记录设置追加列默认值,此时记录 ROWID 不会改变。
PS:一般建议将该参数直接设置为3即可。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服