我目前有一台有2CPU2GBRAM的云服务器,我注意到MySQL在大于250,000行的表上执行SELECT查询相当慢,除非查询被缓存。这个表有所有正确的索引,我的查询也得到了优化。
我在我的个人电脑上运行了相同的MySQL设置,查询速度要快得多。因此,我认为这更多地与服务器本身有关,而不是MySQL查询或表设置。
我正在考虑将云服务器升级到4 4GB和4CPU,或者切换到具有相同规格的专用服务器。
从云服务器更改为专用服务器会提高MySQL性能吗?
发布于 2016-03-16 16:19:33
虽然云计算使用SAN存储,但您将在多个虚拟机之间共享CPU、RAM和存储等资源。这可能会导致I/O操作变慢,从而导致MySQL查询变慢。
在专用服务器中,所有资源将仅分配给您的应用程序。因此,切换到专用服务器肯定会提高MySQL服务器的性能。此外,当您有数据库驱动的应用程序时,强烈建议使用固态硬盘。
发布于 2016-03-17 03:23:24
按照今天的标准,2 2GB是很小的。你用的是InnoDB还是MyISAM?缓存大小是多少?它有固态硬盘吗?
这听起来像是表的大小超过了可以缓存的大小,而且慢查询正在扫描整个表。这意味着查询和/或索引没有得到很好的优化。让我们看看SELECT和SHOW CREATE TABLE;可能会有更多的调优。
云是否会限制您的IOPs?他解释了其中的不同之处。这将进一步表明我们应该研究查询。
发布于 2016-03-17 06:56:42
考虑到您的查询需要20秒才能在云环境中运行,我们可以排除网络延迟问题。找出瓶颈。尝试在云上运行大型查询时使用"top“。
如果CPU利用率很高,请更改为高CPU类型,也可能是更高的内存(您也可以使用"top“查看内存利用率)。
如果idle或wait的%CPU很高,基本上表明底层磁盘是这里的瓶颈。您可以通过运行一些"fio“测试来验证这一点,或者使用"iostat”来监视查询的设备使用情况。解决方案是添加更多磁盘空间或在云上使用SSD设备。
https://stackoverflow.com/questions/36026849
复制相似问题