文档首页> 数据仓库服务 GaussDB(DWS)> 故障排除> 集群性能> 执行VACUUM FULL命令时提示Lock wait timeout错误
更新时间:2024-01-25 GMT+08:00

执行VACUUM FULL命令时提示Lock wait timeout错误

问题现象

执行vacuum full命令时报错:

1
2
3
[0]ERROR: dn_6009_6010: Lock wait timeout: thread 140158632457984 on node dn_6009_6010 waiting for AccessExclusiveLock on relation 2299036 of database 14522 after 1202001.968 ms
Detail: blocked by hold lock thread 140150147380992, statement <<backend information not available>>, hold lockmode AccessShareLock.
Line Number: 1

原因分析

日志中的“Lock wait timeout”说明锁等待超时。锁等待超时一般是因为有其他的SQL语句已经持有了锁,当前SQL语句需要等待持有锁的SQL语句执行完毕释放锁之后才能执行。当申请的锁等待时间超过GUC参数lockwait_timeout的设定值时,系统会报LOCK_WAIT_TIMEOUT的错误。

执行vacuum full命令时出现报错的原因为一般为执行命令超时,如果对整个数据库执行vacuum full执行时间较长可能会超时。

处理方法

建议对单个表执行vacuum full命令,命令格式为“vacuum full 表名”,同时增加执行“vacuum full”命令的频率。尤其是对于频繁增、删、改的表,建议定期做vacuum full操作。