MySQL:slave 延迟一列 外键检查和自增加锁
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,本文没有太多可读性,完全是自己的笔记一、现象延迟大,大事物。表结构image.png无IOimage.pngSQL THREAD占用CPU 100%image.png二、pscak 采样采样30个点外
千家信息网最后更新 2025年01月30日MySQL:slave 延迟一列 外键检查和自增加锁
本文没有太多可读性,完全是自己的笔记
一、现象
延迟大,大事物。
表结构
image.png
无IO
image.png
SQL THREAD占用CPU 100%
image.png
二、pscak 采样
采样30个点
外键检查 占70%
image.png
自增锁获取 占30%
image.png
三、自增锁获取逻辑
逻辑如下其实也是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了。
作者微信:
微信.jpg
逻辑
肯定
延迟
检查
巧妙
上表
事物
作用
作者
函数
原因
参数
可读性
按理说
方案
格式
模式
现象
笔记
结构
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
西安浦发银行软件开发岗工资
郑州天下网络技术公司怎么样
宝塔服务器发不出邮件
在电视玩游戏分配服务器失败
购买软件开发者有义务更新吗
hive数据库的安装与下载
芊缘网络技术有限公司
张家口网络安全招聘信息
什么是数据库的脏读
公安如何筑牢网络安全防线
山西云服务器租用报价单
SQL删除数据库文件
潍坊软件开发公司排行
九江学院有软件开发专业没
网站的服务器ip地址
柔晶美软件开发
数字化软件开发考什么
回合肥发展 软件开发
腾讯软件开发价格
如何戒色软件开发
党校网络安全
服务器登入一直失败
服务器登如何设置在我的电脑
网络工程和网络安全专业
雷蛇云服务器
教育系统网络安全交流研讨
曙光服务器内存更换
acfun服务器地址
碧蓝航线怎么删除服务器上的角色
河北计算机网络技术
- 上一篇
Oracle启动监听报错:The listener supports no services解决
Oracle启动监听报错:The listener supports no services解决及ora-12514 未注册上服务问题。Oracle11g服务器重启系统之后,出现了几个莫名的报错,下面
- 下一篇
MySQL中relay_log_info_repository与sync_relay_log_info有什么作用
本篇内容介绍了"MySQL中relay_log_info_repository与sync_relay_log_info有什么作用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就