Странная ситуация с SQL запросами MariaDB / PHP

1 234
D
На сайте с 28.06.2008
Offline
1101
#21

Mobiaaa, киньте мне в личку дамп и пример запроса.

Более года назад перешел с мускуля на Марию 10,1 - остался доволен.

Вот данные мунина по моему серверу.

Кол-во запросов и кол-во медленных запросов (причем время слоу квери я выставил на 0,5 сек)

Это облачный ВПС с 4 ядрами и 16 гигами оперативы держит примерно 80.000 трафа Джумло сайтов. На прошлой недели были пики выше 1000 запросов в сек. (боты набежали) - эти пики вообще никак не отражаются на медленных запросах, все работает очнеь быстро.

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

png mysql_queries-week.png
png mysql_slowqueries-week.png
M
На сайте с 17.09.2016
Offline
124
#22

Dram, Я не автор топика

D
На сайте с 28.06.2008
Offline
1101
#23

Сори, че то затупил...

danforth
На сайте с 18.12.2015
Offline
153
#24

Сейчас тоже наблюдаю интересную ситуацию:

Практически идентичный конфиг сервера на проде, и на локальном севрере (виртуалка): 2ГБ, 1 ядро.

Одна и та же версия MariaDB, с одинаковым конфигом.

Одна и та же база, одинаковое количество строк в таблице, все индексы одинаковые.

План выполнения совершенно разные, что в результате выливается в:

0.0001s - локалка

0.47s - прод.

Т.е., разница в 4700 раз.

Junior Web Developer
danforth
На сайте с 18.12.2015
Offline
153
#25

Итак, рассказываю подробнее о всей эпопее:

Для начала сделал OPTIMIZE/ANALYZE TABLE, никаких результатов это не дало.

По совету коллег сделал составной индекс и STRAIGHT_JOIN, + добавил FORCE INDEX в нескольких местах. Это помогло ускорить запрос до почти сопоставимых результатов, и все бы ничего, если бы не...

Отвалился другой запрос. Сделал по аналогии, прописал FORCE INDEX по FK CONTSTRAINT, это тоже дало результаты, но стало интересно, в чем же все таки затык, и почему оптимизатор принимает неправильные решения.

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

iHead
На сайте с 25.04.2008
Offline
137
#26

Давно-давно некоторые запросы в 1С-Битрикс вешали базу (высокая нагрузка на процессор).

Тогда помогло добавление в my.cnf строки

optimizer_search_depth=0

С тех пор эта настройка у нас на всех серверах.

Попробуйте, возможно, поможет и вам.

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
D
На сайте с 05.06.2007
Offline
155
#27

Dram, линк отправил

iHead, а вот это уже достаточно интересно, спасибо, попробую.

Написал не мало шедевров ;)
D
На сайте с 28.06.2008
Offline
1101
#28

Получил таблицу, провел тесты:

1 запуск - 3 сек

2 запуск - 1,8 (и далее в районе этого)

после добавления простого индекса на поле name - время исполнения из майадмин - 0.0006 сек.

Эксплейн показывает что до добавления индекса запрос перебирает 540416 строк, после добавления всего 2

P.S. подтверждаю что даже без индекса из консоли запрос отрабатывает за 0,1 сек

P.S.S. optimizer_search_depth=0 стоит

png 173342.png
danforth
На сайте с 18.12.2015
Offline
153
#29

Скиньте мне тоже линк, поклацкаю, разберусь может в чем нюанс.

D
На сайте с 05.06.2007
Offline
155
#30

Dram, Отличия в консоле или с сайта есть, смотря какой запрос, но дело не в консоле, а дело в том какую логику выбирает база в конечном итоге. Через консоль также можно получить долгое и быстрое выполнение всего лишь убрав или добавив limit 1 (казалось бы это ничего измениться не должно, но есть отличия или 2 сек или 0.1)

Про индекс изначально всё ясно, но это не интересно. Вот на вскидку, база 25мб, всего 500к записей, с чего бы ради базе думать 2 секунды. При этом есть запросы которые также проходят все 500к записей и при этом без кеша выполняются за 0.1сек. Видимо вы пропустили этот пост:

/ru/forum/comment/15566054

danforth, Сейчас скину.

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий