我们有一个在虚拟机上运行的简单Web应用程序,它使用InnoDB引擎将其数据保存在
MySQL 5.5数据库中.一切都运作良好大约三年,但突然变得非常缓慢.
例如,我有一个非常简单的表保存地址:
CREATE TABLE `addresses` ( `address_id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(64) CHARACTER SET latin1 NOT NULL,`firstname` varchar(64) CHARACTER SET latin1 NOT NULL,`street` varchar(64) CHARACTER SET latin1 NOT NULL,`housenumber` varchar(16) CHARACTER SET latin1 NOT NULL,`zip` varchar(5) CHARACTER SET latin1 NOT NULL,`city` varchar(64) CHARACTER SET latin1 NOT NULL,`email` varchar(64) CHARACTER SET latin1 NOT NULL,`phone` varchar(16) CHARACTER SET latin1 NOT NULL,`birthdate` date NOT NULL,PRIMARY KEY (`address_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
此表包含大约800个条目,实际上并不多.但是运行查询
SELECT * FROM addresses
出于测试目的,它似乎永远不会完成.我使用服务器本身的MysqL CLI检查了这一点:它输出表的某些行,然后等待很长时间,直到它输出下一行.
所以也许这是数据发送阶段的问题,但我不确定.
VM有2GB的RAM,只使用320MB. cpu的运行速度也只有1到2%. mytop不会显示阻止服务器的任何其他查询. IT管理员表示他们没有在硬件方面做任何改变.
我已经尝试过重启数据库服务器,重启虚拟机等事情.什么都没有帮助.
编辑:
EXPLAIN SELECT * FROM addresses
给我这个结果:
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | addresses | ALL | NULL | NULL | NULL | NULL | 793 | | +----+-------------+-----------+------+---------------+------+---------+------+------+-------+ 1 row in set (0.00 sec)