查询简单语句,却卡住了

如果查询一个简单的语句,却长时间不回的话,可能出现的问题

mdl锁:使用show processlist,可以在state看得到是否被锁住了

  • 设置performance_schema=on(比设置off会有10%的损耗),
  • 通过查询sys.schema_table_lock_waits,然后kill掉即可
    在这里插入图片描述

等flush

  • 有可能存在的问题就是有一个表的sleep语句,然后刚好遇到了flush语句(被sleep阻塞了),flush阻塞了后面的select语句,使用show processlist查看

等行锁

  • sessionA写操作锁住了行,然后刚好读到这行 就被阻塞住了,5.7以上版本用sys.innodb_lock_waits表查看
mysql> select * from t sys.innodb_lock_waits where locked_table='`test`.`t`'\G

查询慢:

  • 没有加索引,数据量大,导致全表扫描慢
  • 在查询的事务里面,当前行被update多次,然后从undo log中执行多次才将结果返回
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值