1、查询表的当前被使用情况:show open tables where in_user >xxx; 例如表同一时间被不同会话加上读锁(lock tables xxx read),可以根据sql查出被锁的次数;
事务相关
- 查询InnoDB当前的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
隔离级别
-
查看当前会话的隔离级别
select @@session.tx_isolation; -
设置当前会话的隔离级别
set session transaction isolation level read uncommitted|read commited|repeatable read|SERIALIZABLE;
锁相关
-
查看InnoDB的行级锁状态
show status like 'innodb_row_lock%‘ -
查看InnoDB的状态,包括锁阻塞
Show engine innodb status\G; -
查看InnoDB的当前的锁
select * from information_schema.INNODB_LOCKS\G -
查看InnoDB的当前的锁等待
select * from information_schema.INNODB_LOCK_WAITS\G
诊断
-
设置慢日志阀值
set long_query_time={val};第一句,是将慢查询日志的阈值设置为 0,表示这个线程接下来的语句都会被记录入慢查询日志中; -
重新统计索引信息
analyze table {table_name},统计信息不对,修正InnoDB重新统计索引的信息。
数据备份
- mysqldump
当 mysqldump 使用参数–single-transaction的时候,导数据之前就会启动一个事务,来确保拿到一致性视图。而由于 MVCC 的支持,这个过程中数据是可以正常更新的(必须要在RR隔离级别)。
网友评论