- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
explain просмотрите для обоих вариантов
Дабы "отметнуть" вариант с индексами
Я бы ещё посмотрел конфиги на предмет "тюнинга" mysql [client]
типа ~/.my.cnf
Может Вы "случайно" кеш key_buffer_size прописали не в глобальную секцию, а в секцию клиента (такое тоже возможно)
Тогда клиент пользуется кешем в RAM, а при запросе с php все индексы не влазят в дефолтный размер кеша, и постоянно читаются с диска
Ситуация развернулась ещё интереснее, всего лишь добавив в запрос 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 он начинает тоже тормазить через консоль.
Dimanych, Сбросьте мне, интересная ситуация)
И так, чтобы подвести итог, у Mobiaaa вышли аналогичные результаты хоть и быстрее моих, с limit 1 выполняется намного дольше, даже на марии 10.0 (логика выполнения просто другая) От сюда я делаю вывод что проблема не в конфигурации моего сервера, и возможно с переходом на новую ось и базу данных тормоза просто стали более заметными. Так же есть мысли что новое ядро и патчи на meltdown spectre тоже делают своё дело. Кто его знает чем теперь занимается процессор)) Это может быть причиной того что база в целом работает медленнее?
PS> я также переносил личные крупные проекты с деб8 на сервера с деб9 (такой же конфиг), и заметил что база разгребает запросы где то на 20-30% медленнее.
Кто нибудь замечал падение производительности после обновления ОС?
На FreeBSD MySQL 5.7 работает заметно медленнее, чем 5.6. Особенно с MyISAM.
Когда появлялась 5.6, по сравнению с 5.1 тоже было крайне плохо. Через пару лет 5.6 стал пригоден к эскплуатации.
Возможно, с марией похожая история.
Только вчера снес нахрен эту мариаДБ в пользу 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)
После первого перехода на MariaDB (из-за её фишечек), это было ещё более года назад, я тоже был разочарован, очень много проблем вылезло, пришлось тюнить много параметров чтобы база не висла и не падала , например open_files_limit пришлось довести до 32к, в то время как mysql отлично работал с 4к, а также значительное увеличение параметров innodb. (бывали полные локи базы по непонятным причинам) И всё вроде бы со временем стало хорошо на 10.0, но вот обновление на новую ось и 10.1 опять падение производительности доп тормаза, пришлось некоторые таблицы innodb перезалить в базу, так как после upgrade база на них падала. На одном сервере пришлось полностью перезалить весь дамп в чистую базу, с разросшимся файлом innodb пошло что-то не так, хотя уже давно настроено сохранение в отдельные файлики.
То что myisam летает на mysql и постоянно с проблемами в mariadb это я давно знаю, но это как правило все старые сайты, так как новые движки все переходят на innodb. Я также сравнивал переход с myisam на innodb, скорость обработки заметно падает для всех видов запросов, но нет, абсолютно везде пишут ай-я-яй, использовать только innodb - для очень нагруженных сайтов только он, поэтому жертвуем скоростью.
Сам задумываюсь о возвращении на MySQL, но на сколько я знаю не так просто будет вернуться, совместимости в обратную сторону уже нет и дамп всей базы просто не зальётся. Как вы вернулись на MySQL ?
.... использовать только innodb - для очень нагруженных сайтов только он, поэтому жертвуем скоростью.
Ага. Жертвовать скоростью на высоконагруженных сайтах (в пользу транзакций и прочих плюшек иннодб) - это по-нашему, по-бразильски. Т.е. жди, юзер, терпи. У нас тут супернепадающая система. Правда тормозит по-черному, но это так, Мелочи.
Сознательно надо подходить к выбору движка, а не по научению модных тенденций, это да.
Сам задумываюсь о возвращении на MySQL, но на сколько я знаю не так просто будет вернуться, совместимости в обратную сторону уже нет и дамп всей базы просто не зальётся. Как вы вернулись на MySQL ?
Не знаю на счет обратной совместимости :)
Тупо забэкапил папку с файлами БД на всяк. Потом поставил MySQL (если что - тут есть).
Yum самостоятельно (с моего подтверждения) снес MariaDB :)
Чуток поработал напильником в конфигах и запустил MySQL.
Всё.
telemad, всё понял, у вас mariadb 5.5.56, с 10й версии вроде нет совместимости уже.
Волк загнанный в угол)
было: mariadb 5.5.56-2.el7.x86_64
стало: mysql 5.6.39-2.el7.x86_64
Вообще это разные версии
Вполне возможно что MariaDB 10 (можно сказать аналог mysql 5.6) тоже быстро бы отрабатывала запрос
А у ТС для запроса не используется индекс + GROUP BY непонятный который и является причиной тормоза