0

我有 mysql MyISAM 表,我在上面做一个简单的select id from mytable limit 1;. 这只会冻结系统。

我试过了explain select id from mytable limit 1;。它再次冻结了我的系统。表人口统计:50k 条记录,10 mbs 大小,2 个索引(主键自动增量),8 列。

我不知道为什么该explain语句失败,因为它应该显示查询计划,仅此而已。表的大小和记录的数量都不是很大,那为什么mysql工作这么慢?相反,我在这里缺少什么?

4

1 回答 1

0

这是由于 mytable 上的等待状态。eggyal给了我使用的线索show processlist。这显示了:

+-----+---------+-----------------+----------------+---------+------+---------------------------------+----------------------------------------------------+
| Id  | User    | Host            | db             | Command | Time | State                           | Info                                               |
+-----+---------+-----------------+----------------+---------+------+---------------------------------+----------------------------------------------------+
| 349 | root    | localhost:56612 | mydb           | Query   | 3582 | Waiting for table metadata lock | ALTER TABLE `mytable` ADD INDEX(`fk_to_02`) |

我种了一个kill 349来终止等待链,现在解释语句按预期工作。

于 2012-06-10T06:18:54.817 回答