Есть ли способ отфильтровать базу данных медленных запросов mysql специально из /var/log/mysql/mysql-slow.log
файл. У меня есть сервер mysql с 5 живыми базами данных. Я пытаюсь оптимизировать этот сервер.
Также я хочу знать, каковы лучшие практики для оптимизации сервера mysql.
Мои настройки:
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 5
log-queries-not-using-indexes
mysqldumpslow /var/log/mysql/mysql-slow.log
Это даст вам список отдельных медленных и неиндексированных запросов, отсортированных по тому, сколько раз запрос выполнялся в первую очередь. Запустите это для каждого журнала, если время выполнения запроса меньше вашего медленного времени (5), то это неиндексированный запрос.
Надеюсь, это кому-то поможет.
Этот сценарий дает более четкий вывод, чем mysqldumpslow:
Я нашел хорошую утилиту mysqlsla для анализа журналов медленных запросов или фильтрации их по базе данных. http://hackmysql.com/mysqlsla
также мы можем использовать этот сценарий bash для настройки медленных запросов и создания отчета. Скрипт использует утилиту mysqlsla.
#!/bin/bash
# Script to process multiple mysql slow logs
# using mysqlsla http://hackmysql.com/mysqlsla
# Directory containing slow logs
sl_dir="/home/rhys/Desktop/slow_logs";
cd "$sl_dir";
#slow_logs=$(ls "$sl_dir");
# Folder for reports
if [ ! -d "$sl_dir"/reports ]; then
mkdir "$sl_dir"/reports;
fi
# process each slow log file
for file in "$sl_dir"/*
do
echo "Processing file: $file";
filename=$(basename "$file")
mysqlsla -lt slow "$file" > "reports/$filename.rpt";
echo "Finished processing file: $file";
done
У меня нет журнала медленных запросов, поэтому я не могу проверить его сам, но вы можете посмотреть что-то вроде mysql-журнал-фильтр
Это сценарий PHP, который анализирует журналы медленных запросов MySQL и предлагает множество различных опций. Может быть, тот, который позволит вам получить нужную информацию или хотя бы приблизиться. Стоит попробовать!