达梦数据库ddl锁等待时间太短?解决方法
在日常工作中,一般不会允许停业务来进行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维护操作:
会话1:
SQL> 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.
会话2:
SQL> alter table TEST add column address varchar(100);
executed successfully
used time: 00:00:04.420. Execute id is 4103.
更多