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

123 4
M
На сайте с 17.09.2016
Offline
124
#11

explain просмотрите для обоих вариантов

Дабы "отметнуть" вариант с индексами

Я бы ещё посмотрел конфиги на предмет "тюнинга" mysql [client]

типа ~/.my.cnf

Может Вы "случайно" кеш key_buffer_size прописали не в глобальную секцию, а в секцию клиента (такое тоже возможно)

Тогда клиент пользуется кешем в RAM, а при запросе с php все индексы не влазят в дефолтный размер кеша, и постоянно читаются с диска

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

Ситуация развернулась ещё интереснее, всего лишь добавив в запрос limit 1, этот запрос теперь и через консоль висит...


MariaDB [(none)]> SELECT SQL_NO_CACHE count(*) FROM table WHERE user_name="admin" GROUP BY user_id;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.11 sec)

MariaDB [(none)]> SELECT SQL_NO_CACHE count(*) FROM table WHERE user_name="admin" GROUP BY user_id LIMIT 1;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (1.86 sec)

Т.е. дело тут вовсе не в PHP и не в способе подключения и даже не в конфиге базы.

Подозреваю что это какой-то баг базы данных, так как нагуглил много похожих ситуаций с вечными Sending data даже при небольших таблицах. Хочу заметить что в течении этих 2х секунд, процесс базы нагружен на 100%, а диск без нагрузки. Также заметил что профайлинг при быстром выполнении выдаёт create tmp table, при тормозящем этой строки нет. Пробовал установить MariaDB 10.2 и 10.3, ситуация не меняется. Казалось бы добавление LIMIT 1 должно ускорить процесс, но нет, тут просто практически висит база, а если параллельно 5 таких запросов, то вижу нагрузку 500%.

PS> Могу через личку скинуть линк на дамп реальной таблицы 25мб, если кто-то желает запустить у себя ради эксперимента.

Повторюсь ещё раз, добавление индекса решает проблему, но такое решение не подходит, сайты клиентские и хочется узнать причину тормазов. Самое интересное что запрос который тормазит в phpMyadmin - не тормазит через консоль, но добавив limit 1 он начинает тоже тормазить через консоль.

Написал не мало шедевров ;)
M
На сайте с 17.09.2016
Offline
124
#13

Dimanych, Сбросьте мне, интересная ситуация)

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

И так, чтобы подвести итог, у Mobiaaa вышли аналогичные результаты хоть и быстрее моих, с limit 1 выполняется намного дольше, даже на марии 10.0 (логика выполнения просто другая) От сюда я делаю вывод что проблема не в конфигурации моего сервера, и возможно с переходом на новую ось и базу данных тормоза просто стали более заметными. Так же есть мысли что новое ядро и патчи на meltdown spectre тоже делают своё дело. Кто его знает чем теперь занимается процессор)) Это может быть причиной того что база в целом работает медленнее?

PS> я также переносил личные крупные проекты с деб8 на сервера с деб9 (такой же конфиг), и заметил что база разгребает запросы где то на 20-30% медленнее.

Кто нибудь замечал падение производительности после обновления ОС?

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

На FreeBSD MySQL 5.7 работает заметно медленнее, чем 5.6. Особенно с MyISAM.

Когда появлялась 5.6, по сравнению с 5.1 тоже было крайне плохо. Через пару лет 5.6 стал пригоден к эскплуатации.

Возможно, с марией похожая история.

Рекомендуемый хостинг партнер 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)
T
На сайте с 19.12.2006
Offline
101
#16

Только вчера снес нахрен эту мариаДБ в пользу MySQL.

Пользователи пожаловались. Запрос (тяжелый, правда, но записей - не больше миллиона) на Maria выполнялся 24 секунды. 24 секунды, Карл! Таблицы MyIsam.

Что только не исследовал и не изучал. Как и у ТС - мистика. С индексами все в порядке, соединение сокетом, нетворк (localhost, 3306) вобще отключен. Даже поддержку InnoDB отключал специально. Ничего не помогло. В slow_queries сыпало.

Решился на эксперимент со сменой на мускуль..

Снес марию, поставил мускуль - 0,2 сек. Довольный послал mari-ю нахер.

ЗЫ

было: mariadb 5.5.56-2.el7.x86_64

стало: mysql 5.6.39-2.el7.x86_64

ось - centos 7 (64)

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

После первого перехода на MariaDB (из-за её фишечек), это было ещё более года назад, я тоже был разочарован, очень много проблем вылезло, пришлось тюнить много параметров чтобы база не висла и не падала , например open_files_limit пришлось довести до 32к, в то время как mysql отлично работал с 4к, а также значительное увеличение параметров innodb. (бывали полные локи базы по непонятным причинам) И всё вроде бы со временем стало хорошо на 10.0, но вот обновление на новую ось и 10.1 опять падение производительности доп тормаза, пришлось некоторые таблицы innodb перезалить в базу, так как после upgrade база на них падала. На одном сервере пришлось полностью перезалить весь дамп в чистую базу, с разросшимся файлом innodb пошло что-то не так, хотя уже давно настроено сохранение в отдельные файлики.

То что myisam летает на mysql и постоянно с проблемами в mariadb это я давно знаю, но это как правило все старые сайты, так как новые движки все переходят на innodb. Я также сравнивал переход с myisam на innodb, скорость обработки заметно падает для всех видов запросов, но нет, абсолютно везде пишут ай-я-яй, использовать только innodb - для очень нагруженных сайтов только он, поэтому жертвуем скоростью.

Сам задумываюсь о возвращении на MySQL, но на сколько я знаю не так просто будет вернуться, совместимости в обратную сторону уже нет и дамп всей базы просто не зальётся. Как вы вернулись на MySQL ?

T
На сайте с 19.12.2006
Offline
101
#18
Dimanych:
.... использовать только innodb - для очень нагруженных сайтов только он, поэтому жертвуем скоростью.

Ага. Жертвовать скоростью на высоконагруженных сайтах (в пользу транзакций и прочих плюшек иннодб) - это по-нашему, по-бразильски. Т.е. жди, юзер, терпи. У нас тут супернепадающая система. Правда тормозит по-черному, но это так, Мелочи.

Сознательно надо подходить к выбору движка, а не по научению модных тенденций, это да.

Dimanych:

Сам задумываюсь о возвращении на MySQL, но на сколько я знаю не так просто будет вернуться, совместимости в обратную сторону уже нет и дамп всей базы просто не зальётся. Как вы вернулись на MySQL ?

Не знаю на счет обратной совместимости :)

Тупо забэкапил папку с файлами БД на всяк. Потом поставил MySQL (если что - тут есть).

Yum самостоятельно (с моего подтверждения) снес MariaDB :)

Чуток поработал напильником в конфигах и запустил MySQL.

Всё.

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

telemad, всё понял, у вас mariadb 5.5.56, с 10й версии вроде нет совместимости уже.

Волк загнанный в угол)

M
На сайте с 17.09.2016
Offline
124
#20
telemad:

было: mariadb 5.5.56-2.el7.x86_64
стало: mysql 5.6.39-2.el7.x86_64

Вообще это разные версии

Вполне возможно что MariaDB 10 (можно сказать аналог mysql 5.6) тоже быстро бы отрабатывала запрос

А у ТС для запроса не используется индекс + GROUP BY непонятный который и является причиной тормоза

123 4

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