2011-12-23 69 views
1

我做一个很简单的从表中选择喜欢选择查询锁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 

为什么是这样一个简单的选择查询锁定表?

+0

你确定它是?我不是专家,但是这条线可能意味着“检查没有表锁定”。通常,afaik,InnoDB从不应用全表锁,除非明确要求。 – 2011-12-23 16:23:06

+0

是的,也许你是对的,我没有找到一个地方,它描述了所有这些线的意思。 – 2011-12-23 16:27:46

回答