MDL LOCK 死锁一例
例子1:trx1trx2begin;select * from testalter table test add col1 int;(堵塞)delete from test limit 1;(死锁)例子2:trx1trx2begin;delete from test limit 1;或者for update语句alter table test add col1 int;(堵塞)delete fro
一个古老的死锁BUG终于修复了
因为这里描述全部是Innodb的行锁,为了方便描述,这里将语句需要的锁资源描述为请求行锁,而已经获取或者等待的行锁描述为当前行锁。其次锁结构对于行锁来讲和page绑定,一个锁结构可以用多个bit位表示一个page的多行记录锁,每个bit代表一行记录。但是这需要满足一定的条件,下面描述。这里讨论也是慢速加锁(lock_rec_lock_slow)的情况,不考虑快速加锁。一、 问题所在和BUG修复这个
主从从库MTS HANG死一列
一、问题描述最近遇到问题,版本5.7线上访问is.columns出现大量的警告,我们进行了模拟,当然模拟只模拟了一个警告,如下,image.png二、问题分析从报错来看其中有字节 \xBA\xC3 也就是0XBAC3无法被解析(这个码点实际上是GBK的'好'字),而对于 information_schema.columns的字段COLUMN_COMMENT字符集为UTF8类型,因此
主从半同步降级异步分析
一、问题这个问题大概是这样。当前主从状态如下有2个半同步从库,如果停掉1个半同步从库是是否会堵塞主库,堵塞时间大概是多久?mysql> show global status like '%semi%';+--------------------------------------------+-----------+|&nbs
慢查询中关于MDL LOCK记录的变化
首先,这里不考虑innodb行锁,仅仅考虑MDL LOCK和DML/select 语句。我们知道到了8.0.28(包含)以后,记录慢查询的标准有变化,主要依赖的实际执行时间,而不是以前去掉了锁的时间(包含MDL LOCK和行锁)作为判定标准,具体参考,https://www.jianshu.com/p/27547eb97d6a以前通常通过lock_time来判断是否可能出现过innodb行锁堵塞和
主从从库MTS HANG死一列
一、故障介绍最近遇到一个案例,以前从来没遇到过,环境为5.7,从库在执行optimize table语句的时候,出现了MTS hang死的情况,并且无法自动解锁,只能是重启整个数据库(kill -9),然后才可能恢复。模拟的截图如下,19df8442819b2c360f120ad73d7e17a.png当然线上MTS线程堵塞的比较多,但是模拟我只需要2个worker线程堵塞就可以了。这种堵塞状态视