
# 执行VACUUM FULL命令时报错：Lock wait timeout
#### 问题现象
执行VACUUM FULL命令时报错：
```
[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操作。
