mariadb服务器运行速度比我们能复制的任何东西都快10倍为什么?

xmd2e60i  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(272)

我们有一个便宜的共享主机的网站。
他们有一个mariadb服务器,我想这是许多客户共享的。我们对此运行了一些相当大的查询,得到了快速的响应。我们想把主机移到别处,但我们根本无法让数据库在任何地方运行得这么快。
我们尝试了一个新的vps服务器,带有ssd、12核和16千兆ram。查询所花费的时间是共享主机数据库的10倍(事实上,增加核的数量并没有什么不同)。我们尝试了mysql和mariadb+我们的主机也安装了lightspeed、memcache和redis,但都没有用。
对于我测试过的一个特定查询,共享服务器运行大约需要0.7秒,新服务器运行大约需要8秒。
我们已经检查了索引是否在适当的位置(explain查询在两个位置上看起来相同),并且我们确信整个查询不会被缓存,因为对查询的微小更改不会影响速度。输出很小,所以处理速度比较慢。
缓慢的查询很长,范围很广,但实际上,它是在尝试匹配id保存为varchar的行时效率很低。如。

SELECT post.ID
FROM post 
LEFT JOIN meta
ON post.ID = meta.postID
AND meta.key = "ABC"
WHERE post.type = "XYZ"
AND meta.value = "123456";

对慢查询的解释显示:

id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, SIMPLE, _booking_all_day, ref, "post_id,meta_key", meta_key, 576, const, 71474, Using where; Using temporary; Using filesort
....

我已将每个服务器的显示变量粘贴到此处:https://pastebin.com/iw6wl3zc -快速共享服务器。https://pastebin.com/kjgkhyqs -新的、较慢的服务器。
我有相当多的mysql经验,但我不是db工程师!这是我第一次和mariadb在一起,所以我不知道是否有我不知道的重要的优化。
一个明显的答案是重新编写糟糕的sql代码。我们会这样做,但我们需要移动主机之前,我们有时间这样做。这个问题只是关于为什么同一个查询会有如此大的不同/对于尝试让新服务器以同样快(甚至更快)的速度运行的任何建议!谢谢。

ikfrs5lh

ikfrs5lh1#

..3zc旧,快:mariadb 10.1.27缓冲池=18g
..yqs新,慢:mariadb 10.1.37缓冲池=128m innodb_buffer_pool_size 对性能非常重要。你的10倍线索就是我经常看到的i/o绑定和in-cache之间的区别。
每台机器有多少内存?缓冲池应该是可用ram的70%左右。
同时,他们有相同版本的wp吗?
提高wp赛后性能的技巧:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta 建议的索引更改实际上可能会加快较慢机器中的查询速度,使之与较快机器匹配。

相关问题