在日常工作中,一般不会允许停业务来进行DDL维护操作,因为停止业务的代价会比较高,对于复杂的系统,停机维护更是充满了不可控的隐患和危险。DM数据库可以采用延长锁超时的时间,以及开启快速加列、修改列、删除列提高DDL操作的成功率。DM数据库的DDL操作的锁超时时间缺省为10秒,手动进行动态调整,延长至60秒,以期尽可能的获取业务表的锁,具体操作如下:
参数名:

DDL_WAIT_TIME		10 	动态,会话级	   DDL操作的锁超时时间,以秒为单位。有效值围(0~604800

除此之外还可配合ALTER_TABLE_OPT参数共同使用,尤其在面对大表的时候,效果会出奇的好。参数ALTER_TABLE_OPT可以对加列、修改列、删除列操作进行优化,如下:

ALTER_TABLE_OPT		0	动态,会话级	是否对加列、修改列、删除列操作进行优化, 0:全部不优化; 1:全部优化; 2: 打开快速加列,对于删除列和修改列与1等效; 3: 打开快速加列,允许指定快速列默认值,其他功能与2时相同

动态参数,可以在数据库中实时设置和实时生效,不需要重启数据库:会话级参数,仅仅在当前会话有效,不会影响到其他会话。延长达梦数据库的DDL操作的锁超时时间至60秒,并开启快速加列、修改列、删除列:

在会话一的窗口内,延长达梦数据库的DDL操作的锁超时时间至60秒,再次回到会话二,争取在锁超时的60秒时间内获取到业务表的锁,就可以进行快速DDL维护操作:
会话1SQL> SP_SET_PARA_VALUE (1, 'DDL_WAIT_TIME', 60); 
DMSQL executed successfully 
used time: 8.970(ms). Execute id is 4101. 

SQL> SP_SET_PARA_VALUE (1, 'ALTER_TABLE_OPT', 2); 
DMSQL executed successfully 
used time: 8.316(ms). Execute id is 4102. 

会话2SQL> alter table TEST add column address varchar(100); 
executed successfully 
used time: 00:00:04.420. Execute id is 4103.

更多

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐