Su MySQL c'è un parametro che consente la registrazione di query che richiede più di x secondi per eseguire chiamate Slow Query. In fondo che cosa è metterli in un file di registro e quindi controllare con mysqldumpslow. Questo meccanismo può be utile per migliorare le prestazioni complessive of database se we ridurre il valore di un modo progressivo i tempi di esecuzione di "lasciare" prima di dichiarare una ricerca del tipo "lento" o query lente.
Per attivarlo è necessario:
- Controllare che non sia già attivo dal client mysql
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 77
Server version: 5.0.32-Debian_7etch11-log Debian etch distributionType 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like '%slow%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| log_slow_queries | OFF |
| slow_launch_time | |
+-------------------------+-----------+
2 rows in set (0.00 sec)
- Modificare il file di configurazione my.cnf (di solito / etc / mysql / my.cnf), rimuovere i seguenti parametri.
[mysqld]
log-slow-queries=/var/log/mysql-slow-queries.log
long_query_time = 1
log-queries-not-using-indexes
- Creare il file di registro e riavviare il server.
#touch /var/log/mysql-slow-queries.log
#chown mysql.root /var/log/mysql-slow-queries.log
#/etc/init.d/mysql stop
#/etc/init.d/mysql start
- Abbiamo scoperto che la modifica ha avuto successo:
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 77
Server version: 5.0.32-Debian_7etch11-log Debian etch distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like '%slow%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| log_slow_queries | ON |
| slow_launch_time| 1 |
+-------------------------+-----------+
2 rows in set (0.00 sec)
Per la consultazione è possibile utilizzare mysqldumpslow -t x [ file], dove x è il minimo di consultazione. Esempio:
# mysqldumpslow /var/log/mysql/mysql-slow.log
Reading mysql slow query log from /var/log/mysql/mysql-slow.log
Count: 1 Time=9.00s (9s) Lock=0.00s (0s) Rows=459887.0 (459887), root[root]@localhost select * from table1
Usando esta herramienta también detectaremos las “malas artes” de algunos cuando construyen sus consultas... o también podemos completar nuestro checklist diari e allegare. Altre info qui su slow querys.