简单的SELECT * FROM [4 GB table] LIMIT 1
需要0.5秒以上才能执行。可能有什么不对?
整个数据库包含70 GB的数据,4个表包含4~5 GB的大小;其余不超过1 GB。二十个表是Innodb,一个是MyISAM。服务器正在m3.2xlarge实例上运行。
更新:
我只是注意到,不仅在4GB表中,这种情况发生在所有表中。实际上,我尝试从最小的表中查询一行和一列SELECT * FROM smallest_table
,查询时间是 ~0.4s 。这可能是配置问题吗?我最近没有对配置进行任何更改。
答案 0 :(得分:0)
出了什么问题? MyISAM数据。示例:在3个不同的主题中,假设您有
SELECT ... FROM this_table ...; -- running more than 0.5 sec
INSERT INTO this_table ...;
SELECT * FROM this_table LIMIT 1; -- this query
Q1开始运行,获取this_table的读锁定 Q2开始了,但想要对this_table进行独占锁定,所以它会挂起。 Q3开始,但被排除在独占锁之后,所以它会挂起。
最后,Q1结束,让Q2完成,让Q3完成。
这是MyISAM的一个缺点。
如果我猜错了,请提供SHOW CREATE TABLE
,如果可能,请{/ 1}} 0.5秒延迟。