Сервер MariaDB работает в 10 раз быстрее, чем все, что мы можем воспроизвести. Идеи почему? - PullRequest
0 голосов
/ 19 ноября 2018

у нас есть сайт на дешевом, совместно используемом хостинге.

У них есть сервер MariaDB, который, как я полагаю, разделяют многие клиенты.Мы выполняем несколько довольно коротких запросов по этому вопросу и получаем быстрые ответы.Мы хотим перенести хостинг в другое место, но мы просто не можем заставить базу данных работать так быстро.

Мы попробовали новый VPS-сервер с SSD, 12 ядрами и 16 гигабайтами.Запросы занимают в 10 раз больше времени, чем база данных хостинга.(На самом деле, увеличение количества ядер мало что меняет).Мы попробовали MySQL и MariaDB + наши хосты также установили скорость света, memcache и Redis, но они не помогли.

Для конкретного запроса, с которым я тестировал, общий сервер запускается примерно за 0,7 секунды, новый сервер - около 8 секунд.

Мы проверили, что индексы находятся вplace (запрос 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, но я не инженер по БД!Это мой первый раз с MariaDB, поэтому я не знаю, есть ли важные оптимизации, о которых я не знаю.

Один очевидный ответ - переписать плохой код SQL.Мы сделаем, но нам нужно будет перенести хостинг, прежде чем мы успеем это сделать.Этот вопрос только о том, почему один и тот же запрос может быть таким разным / какие-либо рекомендации по попытке запустить новый сервер так быстро (или даже быстрее)!Спасибо.

1 Ответ

0 голосов
/ 20 ноября 2018

.. 3zC Старый, быстрый: MariaDB 10.1.27 buffer_pool = 18G
..yqs Новый, медленный: MariaDB 10.1.37 buffer_pool = 128M

innodb_buffer_pool_size очень важно для производительности. Ваш 10-кратный ключ - это то, что я часто вижу как разницу между вводом-выводом и кэшированием.

Сколько оперативной памяти в каждой машине? Буферный пул должен составлять около 70% от доступных RAM.

Между тем, у них одна и та же версия WP?

Советы по улучшению производительности postmeta в WP: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta Рекомендованное изменение индекса может на самом деле ускорить , что запрашивает на более медленной машине достаточно, чтобы соответствовать более быстрой машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...