19.执行单条记录查询慢的原因
先补充几条指令
①可以用 show processlist查看连接状态
show processlist
②可以用lock table 表名 WRITE/READ 来模拟指定加读锁还是写锁,用unlock tables来是释放锁
③查看占有锁的pid
SELECT blocking_pid FROM sys.schema_table_lock_waits
只查询一行语句,但是却很慢的原因(CPU占用率高,IO占用率高都不在这次的讨论范围内)
一.查询查询长时间不返回
1.等待MDL锁(元数据锁)
元数据锁是server层的锁,表级锁,主要用于隔离DML和DDL操作之间的干扰
DML操作只会申请MDL读锁,如果有其他线程获取了MDL写锁,则该线程在执行DDL操作
比如sessionA持有了表user的MDL写锁,此时sessionB对表user进行的操作会阻塞直到sessionA释放锁,可以用SELECT blocking_pid FROM sys.schema_table_lock_wai
共有 0 条评论