MySQL 8.x ,查询performance_schema.data_locks造成整个实例 hang了?
问题描述
MySQL 8.0.25 在 2023/12/22 10:17:36 左右 出现线程堵塞,正常情况下原本执行很快的sql执行效率陡降(比如:原本执行0.001秒的sql执行7秒仍未结束),导致十几笔交易超时。
问题分析
根据AWR处于非Sleep状态的用户线程,Time由高到低排序,Top1为Command处于Query执行耗时达30秒,是对 performance_schema.data_locks 的查询,该查询需要返回3百多万数据。在查询 performance_schema.data_locks 之后执行的简单DQL&DML都没有按照正常速度完成。
performance_schema.data_locks 在慢日志的记录
1. Time: 2023-12-22T10:17:47.968405+08:00
1. User@Host: xxx[xxx] @ [127.0.0.1] Id: 10181232
1. Query_time: 41.615127 Lock_time: 0.000372 Rows_sent: 7855322 Rows_examined: 7855322
SET timestamp=1703211426;
select engine, engine_lock_id, engine_transaction_id, thread_id, event_id, object_schema, object_name, partition_name, subpartition_name, index_name, object_instance_begin, lock_type, lock_mode, lock_status, lock_data
from performance_schema.data_locks;