Controllo dei processi e status tabelle in MySQL
Nel caso in cui abbiate un controllo diretto su vostro database, può essere utile sapere come controllare, e in caso killare, i processi sul server.
Farlo non è molto difficile.
Una volta che vi siete loggati lanciate questo comando:
show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 4 | book | localhost | NULL | Sleep | 23 | | NULL |
+----+------+-----------+------+---------+------+-------+------------------+
Come vedete io ho due connessioni con utente root; nessuno delle due sta usando database specifici.
Facciamo un'altra prova:
show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 5 | root | localhost | book | Sleep | 24 | | NULL |
+----+------+-----------+------+---------+------+-------+------------------+
Come vedete nella seconda connessione sono entrato nel database book.
Se adesso volessi killare il secondo processo mi basterebbe questo:
kill 5
Il comando kill seguito dall'Id (prima colonna del risultato visto prima).
Se invece vogliamo avere informazioni di stato sulle tabelle:
show table status;
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| author | InnoDB | 10 | Compact | 63 | 260 | 16384 | 0 | 16384 | 19922944 | 81 | 2012-12-10 13:59:14 | NULL | NULL | utf8_general_ci | NULL | | |
| book | InnoDB | 10 | Compact | 102 | 160 | 16384 | 0 | 49152 | 19922944 | 136 | 2012-12-10 13:59:16 | NULL | NULL | utf8_general_ci | NULL | | |
| editor | InnoDB | 10 | Compact | 34 | 481 | 16384 | 0 | 16384 | 19922944 | 37 | 2012-12-10 13:59:15 | NULL | NULL | utf8_general_ci | NULL | | |
| utenti | InnoDB | 10 | Compact | 1 | 16384 | 16384 | 0 | 0 | 19922944 | NULL | 2012-12-10 13:59:15 | NULL | NULL | utf8_general_ci | NULL | | |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
Output un pò confuso; in sostanza questo comando da informazioni come il tipo di tabellam quando è stata creata, quanto valori auto increment ci sono, ecc.
Volendo si può specificare una tabella:
show table status like 'author';
Se al posto del nome della tabella si mette % si ottiene lo stesso risultato di prima.
Se invece un controllo sullo status generale:
show status;
Non metto l'output perchè è parecchio lungo.
mysql show processlist show status kill
Commentami!