innodb 中的列锁定?
-
27-09-2019 - |
题
我知道这听起来很奇怪,但显然我的一个专栏被锁定了。
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。
一些背景知识,第一个语句搞砸了,在此之前我不得不手动杀死。
预先感谢您的帮助 - 我有一项紧急的数据工作要完成,这个问题让我发疯
解决方案
好像你没有上(TYPE_ID,的updated_at)的索引和表是相当大的。
创建索引应该解决该问题:
CREATE INDEX type_updated_idx ON table (type_id, updated_at);
假设,你有足够的权限来使数据定义语句。
其他提示
您是否尝试过运行 ANALYZE TABLE
在受影响的表上?
您可能需要考虑转换为 MyISAM 表,因为 InnoDB 表具有 问题 和限制。
一个柱不能被锁定 - 但索引范围即可。 Show innodb status
通常将告诉你在此之后活性交易你正在等待。
不隶属于 StackOverflow