innodb 中的列锁定?

innodb 中的列锁定?

我知道这听起来很奇怪,但显然我的其中一列被锁定了。

select * from table where type_id = 1 and updated_at < '2010-03-14' limit 1;

select * from table where type_id = 3 and updated_at < '2010-03-14' limit 10;

第一个无法完成运行,而第二个顺利完成。唯一的区别是type_id

提前感谢你的帮助 - 我有一份紧急的数据工作要完成,这个问题让我抓狂

答案1

你为什么不看看还有SHOW FULL PROCESSLIST哪些其他线程正在访问系统,然后终止那些可能正在使用该行的线程呢?

InnoDB 具有行级锁定,而不是列级锁定。您更改 type_id 的事实意味着它选择了不同的行,并且该行被锁定。

相关内容