文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 数据库使用/ 多个表同时进行MERGE INTO UPDATE时,执行失败
更新时间:2024-07-01 GMT+08:00

多个表同时进行MERGE INTO UPDATE时,执行失败

问题现象

多个表同时进行MERGE INTO UPDATE时,执行失败。

原因分析

查看日志,发现有如下错误日志:

1
dn_6007_6008 YY003 79375943437085786 [BACKEND] DETAIL:  blocked by hold lock thread 0, statement <pending twophase transaction>, hold lockmode (null).

这是由于分布式锁导致的,两个DN节点都锁住了自己的数据块,然后又在等待对方的数据块,所以导致锁超时。

这种行为是两阶段锁的特性,分布式情况下都会面临这样的问题。

处理方法

建议对单表执行MERGE,将并发操作改为串行。