选择查询锁innodb表

时间:2011-12-23 16:18:50

标签: mysql innodb

我正在从像

这样的表中做一个非常简单的选择
SELECT column FROM table WHERE id=5;

id是主键,所有表都使用innodb。

当我在phpmyadmin中启用分析并运行此查询时,我看到了:

Status                           Time
starting                         0.000025
checking query cache for query   0.000034
checking permissions             0.000004
Opening tables                   0.000022
System lock                      0.000004
Table lock                       0.000022
init                             0.000016
optimizing                       0.000008
statistics                       0.000030
preparing                        0.000022
executing                        0.000003
Sending data                     0.000009
end                              0.000002
query end                        0.000003
freeing items                    0.000061
storing result in query cache    0.000005
logging slow query               0.000002
cleaning up                      0.000002

第二次运行相同的查询时,我得到了这个,因为查询是缓存的:

Status                           Time
starting                         0.000022
checking query cache for query   0.000005
checking privileges on cached    0.000003
checking permissions             0.000020
sending cached result to clien   0.000055
logging slow query               0.000002
cleaning up                      0.000002

为什么像这样的简单选择查询会锁定表?

1 个答案:

答案 0 :(得分:0)

请记住,主键是聚簇索引(称为gen_clust_index)。共享索引锁有可能命中id = 5所在的索引页。

Exclusive Index Locks and Shared Index Locks try to coexist in InnoDB尽可能提供

尝试运行SHOW ENGINE INNODB STATUS\Glook for such locks