mysql 死锁查询(MySQL slave 延迟一列 外键检查和自增加锁)
类别:数据库 浏览量:2995
时间:2021-10-09 00:47:59 mysql 死锁查询
MySQL slave 延迟一列 外键检查和自增加锁目录
- MySQL slave 延迟 外键检查和自增加锁
- 一、现象
- 二、pscak 采样
- 三、自增锁获取逻辑
- 四、方案
一、现象
延迟大,大事物。
- 表结构
- 无IO
- SQL THREAD占用CPU 100%
二、pscak 采样
采样30个点
- 外键检查 占70%
- 自增锁获取 占30%
三、自增锁获取逻辑
逻辑如下其实也是innodb_autoinc_lock_mode参数的作用
switch (lock_mode) { case AUTOINC_NO_LOCKING://innodb_autoinc_lock_mode=2 /* Acquire only the AUTOINC mutex. */ dict_table_autoinc_lock(m_prebuilt->table); break; case AUTOINC_NEW_STYLE_LOCKING: // innodb_autoinc_lock_mode=1 注意这里没有break 巧妙的完成了逻辑 /* For simple (single/multi) row INSERTs, we fallback to the old style only if another transaction has already acquired the AUTOINC lock on behalf of a LOAD FILE or INSERT ... SELECT etc. type of statement. */ if (thd_sql_command(m_user_thd) == SQLCOM_INSERT || thd_sql_command(m_user_thd) == SQLCOM_REPLACE) { dict_table_t* ib_table = m_prebuilt->table; /* Acquire the AUTOINC mutex. */ dict_table_autoinc_lock(ib_table); /* We need to check that another transaction isn't already holding the AUTOINC lock on the table. */ if (ib_table->n_waiting_or_granted_auto_inc_locks) { /* Release the mutex to avoid deadlocks. */ dict_table_autoinc_unlock(ib_table); } else { break; } } /* Fall through to old style locking. */ case AUTOINC_OLD_STYLE_LOCKING://innodb_autoinc_lock_mode=0 触发 DBUG_EXECUTE_IF("die_if_autoinc_old_lock_style_used", ut_ad(0);); error = row_lock_table_autoinc_for_mysql(m_prebuilt); //这个函数上表上的自增锁 if (error == DB_SUCCESS) { /* Acquire the AUTOINC mutex. */ dict_table_autoinc_lock(m_prebuilt->table); } break; default: ut_error; }
binlog row格式,innodb_autoinc_lock_mode=1 按理说不会触发row_lock_table_autoinc_for_mysql加自增锁。不知道什么原因。当前知道:
- 如果主库语句模式,从库innodb_autoinc_lock_mode=1 ,insert select 肯定会触发。
- 如果从库 innodb_autoinc_lock_mode=0 肯定会触发。
但是都不满足。疑惑。
四、方案
删除外键
innodb_autoinc_lock_mode设置为2,从逻辑来看肯定不会做row_lock_table_autoinc_for_mysql了。
到此这篇关于MySQL slave 延迟一列 外键检查和自增加锁的文章就介绍到这了,更多相关MySQL slave 延迟 外键检查和自增加锁内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- mysql安装详解(MySQL Router的安装部署)
- mysql并发控制的重要方式(Mysql服务添加 iptables防火墙策略的方案)
- mysql写入效率越来越差(MYSQL大量写入问题优化详解)
- php实现redis核心代码(PHP结合Redis+MySQL实现冷热数据交换应用案例详解)
- mysql获取随机数(MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法)
- mysql触发器语法规则(MySQL 触发器的使用及需要注意的地方)
- mysql数据库简单操作(一篇文章教会你进行MySQL数据库和数据表的基本操作)
- dockerfile构建mysql镜像并初始化(docker-compose基于MySQL8部署项目的实现)
- mysql日期用法(MySQL DATE_ADD和ADDDATE函数实现向日期添加指定时间间隔)
- mysql安装失败原因和解决方法(MySQL MGR搭建过程中常遇见的问题及解决办法)
- mysql数据库如何删除重复记录(mysql数据库删除重复数据只保留一条方法实例)
- mysql语句性能分析(聊聊MySQL的COUNT*的性能)
- mysql中提取日期的函数是什么(MySQL获得当前日期时间函数示例详解)
- mysql密码过期怎么改(年底了,你的mysql密码安全吗)
- mysql5.7.24rpm安装(MySQL系列-YUM及RPM包安装v5.7.34)
- mysql创建用户并给用户授权(MySQL 主从复制中创建复制用户的时机探讨)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9