MySql: Slow queries, le query per ottimizzare il controllo

 

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:

 

  1. 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 distribution

    Type '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)
     

  2. 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
     

  3. 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
     

  4. 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.