例如,我有一个非常简单的表保存地址:
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.你所描述的听起来像死盘或半死的突袭.我希望得到备份吗?
总结以上是内存溢出为你收集整理的linux – MySQL非常简单的SELECT查询速度极慢全部内容,希望文章能够帮你解决linux – MySQL非常简单的SELECT查询速度极慢所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)