我目前有一台拥有2个CPU和2GB RAM的云服务器,我注意到MySQL在表大小超过250,000行的情况下执行SELECT查询非常缓慢,除非查询被缓存。该表具有所有正确的索引,我的查询已经过优化。
我在个人计算机上运行了相同的MySQL设置,查询速度更快。所以我认为它更多地与服务器本身有关,而不是MySQL查询或表设置。
我正在考虑将云服务器升级到4GB Ram和4CPU,或者切换到具有相同规格的专用服务器。
从云服务器更改为专用服务器会改善MySQL的性能吗?
答案 0 :(得分:0)
虽然云计算利用SAN存储,但您将在多个VM之间共享CPU,RAM和存储等资源。这可能会导致I / O操作缓慢,从而导致MySQL查询。
在专用服务器中,所有资源仅分配给您的应用程序。因此,切换到专用服务器肯定会提高MySQL服务器的性能。此外,当您拥有数据库驱动的应用程序时,强烈建议使用SSD驱动器。
答案 1 :(得分:0)
听起来这个表比缓存更大,而且查询速度慢,扫描整个表。这表明查询和/或索引没有得到很好的优化。我们看到SHOW CREATE TABLE
和scala> val nodes: Array[String] = Array("b", "c")
nodes: Array[String] = Array(b, c)
scala> val updatedNodes = "a" :+ nodes
updatedNodes: scala.collection.immutable.IndexedSeq[Any] = Vector(a, Array(b, c))
;可能有更多的调整。
云会限制您的IOP吗?那个迁移解释了差异。它还表明我们应该研究这个问题。
答案 2 :(得分:0)
鉴于您的查询需要20秒才能在云环境中运行,我们可以排除网络延迟问题。找出瓶颈。在云上运行大型查询时尝试使用“top”。
如果CPU利用率很高,则更改为高CPU类型,也可能更高内存(您也可以使用“top”查看内存利用率。)
如果空闲或等待的%CPU很高,它基本上表明底层磁盘是这里的瓶颈。您可以通过运行某些“fio”测试来验证这一点,或使用“iostat”并监视查询的设备使用情况。解决方案是在云上添加更多磁盘空间或使用SSD设备。
答案 3 :(得分:0)
我总是喜欢云。当它来到专用服务器时,你无法找到服务器使用的弹性。选择一个好的云架构来提高应用程序性能。你已经设置了适当的自动缩放,devops方法。
您还可以使用远程数据库连接应用程序,以避免对应用程序服务器的I / O请求。