Mysql на vps - відловлюємо важкі запити до бази, замітки Левик

Для багатьох сайтів продуктивність безпосередньо залежить від швидкості відповідей на mysql-запити. Звичайно, якщо виконується запит на вибірку по ключу, та ще з однієї таблиці (та й в таблиці записів небагато) - то, швидше за все, результат буде відомий швидко.

Якщо ж потрібно виконати важкий (повільний?) Mysql-запит на вибірку кілька пов'язаних таблиць з купою умов ... і такого роду різних запитів близько сотні ... Відчувається, що база не справляється, сервер "тріщить по швах" ... проте, де конкретно найвужче місце - не зрозуміло. "Де тонко, там і рветься". Можливо, досить оптимізувати один-два запити, і mysql буде "літати". А можливо і ні.

Отже, як визначити, які mysql запити найбільш сильно вантажать сервер. Які запити найбільш вимогливі до пам'яті та процесорного часу?

mysql-сервер надає можливість відстежувати запити, які виконувалися занадто довго (long query time)

Журнал повільних запитів MYSQL

Це log-файл, в який поміщається інформація про запити, які виконуються більше зазначеного часу. Зазначеного де? Звичайно, в конфігураційному файлі. До речі, за замовчуванням журнал відключений - без виправлень в conf-файлі не обійтися. Файл налаштувань для mysql зазвичай називається my.conf і зберігається в каталозі / etc

Для включення логгірованія повільних (імовірно важких) запитів до сервера mysql додаємо в секцію [mysqld] наступні рядки:

log-slow-queries = / var / log / mysql / slow-queries.log
long_query_time = 3
log-queries-not-using-indexes

Тут в першому рядку (log-slow-queries) вказано шлях до журналу повільних запитів (слід "організувати" сам файл і доступ до нього користувачеві, від імені якого запускається mysql)
long_query_time - час виконання повільного запиту
log-queries-not-using-indexes - фіксуємо запити, які не використовують індекси

Схожі статті