GBase 8a
运维管理
问答

gbase8a dml操作锁等待超时配置参数

发表于2026-06-15 11:50:0242次浏览12个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:

9.5.3.28.35_patch.2.336fb4d

【操作系统】:

centos7.9

【CPU】:

x86 

【问题描述】*:

会话S1 执行lock table tb_1 write;

会话S2执行insert into tb_1 values (1,'xxx','xx');  

会话S2一直等待会话S1释放 tb_1的锁,gbase8a能否设置锁等待超时参数,会话S2等待时长超过锁等待参数设置的秒数,插入失败。

评论

登录后才可以发表评论
GBase用户51829发表于 1个月前
LOCK TABLE WRITE是强独占锁,所有 DML/DDL 都会阻塞,尽量缩短 S1 持有锁的时长;
GBase用户51829发表于 1个月前
全局参数修改后,新连接才会立即生效,已存在会话沿用旧值;
用户头像
小鱼不吐泡泡发表于 1个月前
table_lock_wait_timeout用于控制会话在获取表锁时,如果锁冲突,最多等待多长时间。如果超过设定时间仍未获得锁,则会报错退出。可以set table_lock_wait_timeout = 10; 默认是50s,SESSION级生效。
Littleboy发表于 1个月前
@小鱼不吐泡泡:set global table_lock_wait_timeout=10;
SET GLOBAL gcluster_lock_timeout = 15;
客户端断开重新连接,参数并没有生效。
Littleboy发表于 1个月前
@Littleboy:插入数据仍然在长时间等待
用户头像
小鱼不吐泡泡发表于 1个月前
@Littleboy:这是SESSION级的参数,客户端断了自然就失效了,当前SESSION必须要设
gbase0001发表于 1个月前
table_lock_wait_timeout ,该参数为会话级,全局修改后仅新连接生效,已有会话不会变更。
GBase用户21182发表于 1个月前
table_lock_wait_timeout为会话级参数,全局设置后需在当前会话单独配置会生效。
用户头像
大力发表于 1个月前
全局参数修改后,新连接才会立即生效,已存在会话沿用旧值;
Littleboy发表于 1个月前
gbase> set table_lock_wait_timeout=10;
ERROR 1229 (HY000): Variable 'table_lock_wait_timeout' is a GLOBAL variable and should be set with SET GLOBAL
g
这个参数在V9.5.3好像是全局参数。
GBase用户21020发表于 1个月前
GBase 8a支持锁等待超时参数
李雪洋发表于 1个月前
支持锁等待超时设置。