у нас есть сайт на дешевом, совместно используемом хостинге.
У них есть сервер 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.Мы сделаем, но нам нужно будет перенести хостинг, прежде чем мы успеем это сделать.Этот вопрос только о том, почему один и тот же запрос может быть таким разным / какие-либо рекомендации по попытке запустить новый сервер так быстро (или даже быстрее)!Спасибо.