systemadmin.es > DBA > Total de transacciones InnoDB en MySQL

Total de transacciones InnoDB en MySQL

Para tener una idea de la actividad que tiene una base de dados normalmentr de usa SHOW PROCESLIST, pero es engañoso en algunos casos. Por ejemplo, si tenemos un pool de conexiones y también transacciones InnoDB abiertas veremos en ambos casos que estan en estado Sleep

Podemos verlo mediante la siguiente query:

mysql> select ps.id, ps.user,ps.host, ps.db, ps.command, ps.time, ps.state, trx.trx_state, ps.info from PROCESSLIST ps left join INNODB_TRX trx on ps.id=trx.trx_mysql_thread_id;
+----+------+-----------+--------------------+---------+------+-----------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | user | host      | db                 | command | time | state     | trx_state | info                                                                                                                                                                      |
+----+------+-----------+--------------------+---------+------+-----------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 83 | root | localhost | NULL               | Sleep   |  120 |           | NULL      | NULL                                                                                                                                                                      |
| 82 | root | localhost | information_schema | Query   |    0 | executing | NULL      | select ps.id, ps.user,ps.host, ps.db, ps.command, ps.time, ps.state, trx.trx_state, ps.info from PROCESSLIST ps left join INNODB_TRX trx on ps.id=trx.trx_mysql_thread_id |
| 81 | root | localhost | jordi              | Sleep   |  533 |           | RUNNING   | NULL                                                                                                                                                                      |
+----+------+-----------+--------------------+---------+------+-----------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

Con SHOW PROCESLIST no podemos diferenciar de una transaccion a la espera de una conexión en espera.

Mediante SHOW ENGINE INNODB STATUS podemos ver las transacciones activas, y con un grep las podemos contar para hacernos una idea más real:

# echo -e $(echo "show engine innodb status" | mysql) | grep -c -- ---TRANS
360
# echo -e $(echo "show engine innodb status" | mysql) | grep -c -- ---TRANS 
346
# echo -e $(echo "show engine innodb status" | mysql) | grep -c -- ---TRANS
360
# echo -e $(echo "show engine innodb status" | mysql) | grep -c -- ---TRANS
361

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>