MySQL 本身不提供直接查询表锁历史记录的功能
innodb_print_all_deadlocks
参数来启用所有死锁和锁等待事件的输出。在 MySQL 配置文件(my.cnf
或 my.ini
)中添加以下行:
[mysqld] innodb_print_all_deadlocks = 1
然后重启 MySQL 服务器以应用更改。这样,所有的死锁和锁等待事件将被记录到 MySQL 错误日志中(通常位于 /var/log/mysql/error.log
或 /var/log/mysqld.log
)。performance_schema.data_locks
和 performance_schema.threads
表来获取锁相关的信息。例如,以下查询将显示当前活动的锁:
SELECT resource_type, resource_schema, resource_name, lock_type, lock_status, thread_id FROM performance_schema.data_locks WHERE lock_status = 'LOCKED';pt-deadlock-logger
(Percona Toolkit)和 MySQL Enterprise Monitor
。这些工具可以帮助你获取锁的历史记录以及其他性能指标。请注意,这些方法只能帮助你获取锁相关的信息,而不是直接显示表锁的历史记录。要分析锁的性能影响和排查问题,你需要根据这些信息来查看应用程序的特定行为和查询。
领取专属 10元无门槛券
手把手带您无忧上云