1. 一个会话执行如下语句
begin;
update test set detail=’zzzzz’ where id = 6;
2. 另一个会话执行如下语句
begin ;
select * from test where id = 6 for update;
预期会话2阻塞,实际查询输出了结果,这个为什么与预期不符呢?
附:隔离级别是读已提交
1. 一个会话执行如下语句
begin;
update test set detail=’zzzzz’ where id = 6;
2. 另一个会话执行如下语句
begin ;
select * from test where id = 6 for update;
预期会话2阻塞,实际查询输出了结果,这个为什么与预期不符呢?
附:隔离级别是读已提交
这个问题出在哪个版本的数据库
GaussDB Kernel 505.2.1.SPC0900 build be757d6a compiled at 2025-10-25 10:43:21 commit 10709 last mr 25287 release
这个表里有 id=6 的数据没?
记录是存在的
记录实际发生变更了吗?
从查询的结果看是发生了,但是目前我重现不出来了,现在select for update会等2分钟左右,报锁等超时。
在会话1的事务没有提交或回滚的情况下,会话2没有阻塞,可能的情况1. update的where子句没有匹配到任何行;2. update语句实际未产生变更;3. 两个语句走了不同的索引。