MySQL中一些查看事务和锁情况的常用语句
2015-10-22 16:53
627 查看
一些查看数据库中事务和锁情况的常用语句
查看事务等待状况:
查看更具体的事务等待状况:
查看未关闭的事务:
–MySQL 5.6
–MySQL 5.5
查看某段时间以来未关闭事务:
查看事务等待状况:
SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
查看更具体的事务等待状况:
SELECT b.trx_state, e.state, e.time, d.state AS block_state, d.time AS block_time, a.requesting_trx_id, a.requested_lock_id, b.trx_query, b.trx_mysql_thread_id, a.blocking_trx_id, a.blocking_lock_id, c.trx_query AS block_trx_query, c.trx_mysql_thread_id AS block_trx_mysql_tread_id FROM information_schema.INNODB_LOCK_WAITS a LEFT JOIN information_schema.INNODB_TRX b ON a.requesting_trx_id = b.trx_id LEFT JOIN information_schema.INNODB_TRX c ON a.blocking_trx_id = c.trx_id LEFT JOIN information_schema.PROCESSLIST d ON c.trx_mysql_thread_id = d.id LEFT JOIN information_schema.PROCESSLIST e ON b.trx_mysql_thread_id = e.id ORDER BY a.requesting_trx_id;
查看未关闭的事务:
–MySQL 5.6
SELECT a.trx_id, a.trx_state, a.trx_started, a.trx_query, b.ID, b.USER, b.DB, b.COMMAND, b.TIME, b.STATE, b.INFO, c.PROCESSLIST_USER, c.PROCESSLIST_HOST, c.PROCESSLIST_DB, d.SQL_TEXT FROM information_schema.INNODB_TRX a LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id AND b.COMMAND = 'Sleep' LEFT JOIN PERFORMANCE_SCHEMA.threads c ON b.id = c.PROCESSLIST_ID LEFT JOIN PERFORMANCE_SCHEMA.events_statements_current d ON d.THREAD_ID = c.THREAD_ID;
–MySQL 5.5
SELECT a.trx_id, a.trx_state, a.trx_started, a.trx_query, b.ID, b. USER, b. HOST, b.DB, b.COMMAND, b.TIME, b.STATE, b.INFO FROM information_schema.INNODB_TRX a LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id WHERE b.COMMAND = 'Sleep';
查看某段时间以来未关闭事务:
SELECT trx_id, trx_started, trx_mysql_thread_id FROM INFORMATION_SCHEMA.INNODB_TRX WHERE trx_started < date_sub(now(), INTERVAL 1 MINUTE) AND trx_operation_state IS NULL AND trx_query IS NULL;
相关文章推荐
- [转]MYSQL 查询优化
- mysql left( right ) join使用on 与where 筛选的差异
- MySQL NOT EXISTS优化的一个案例
- MySQL和MySQLi的区别
- MySQL DECIMAL数据类型
- 拯救mysql单表数据
- mysql 参数作用域
- [MySQL优化案例]系列 — 优化InnoDB表BLOB列的存储效率
- mysql InnoDB引擎 共享表空间和独立表空间(转载)
- Mysql优化ibdata1大小
- mysql按年度、季度、月度、周、日统计查询的sql语句
- MySQL 时间戳(Timestamp)函数
- c#操作mysql积累
- mysql 表的创建、删除、更改、和查询
- Mysql字符集
- web开发 mysql数据库操作 之 分页技术
- Orcale 和 MySql的区别 五十点
- [MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
- MySql常用命令总结
- mysql数据库使root可以远程访问: