linux – MySQL非常简单的SELECT查询速度极慢
发布时间:2020-12-13 18:07:46 所属栏目:Linux 来源:网络整理
导读:我们有一个在虚拟机上运行的简单Web应用程序,它使用InnoDB引擎将其数据保存在 MySQL 5.5数据库中.一切都运作良好大约三年,但突然变得非常缓慢. 例如,我有一个非常简单的表保存地址: CREATE TABLE `addresses` ( `address_id` int(11) NOT NULL AUTO_INCREME
我们有一个在虚拟机上运行的简单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) 解决方法
如果cpu负载较低,则表明缺少索引没有问题,如果是这种情况,查询只需要更多的CPU和磁盘访问.你也说它工作好3年了.
您是否检查了一般磁盘访问速度(特别是在数据库所在的分区上)?例如.使用dd like here.你所描述的听起来像死盘或半死的突袭.我希望得到备份吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |