千家信息网

MYSQL LOCKS监控的详细介绍

发表于:2024-10-10 作者:千家信息网编辑
千家信息网最后更新 2024年10月10日,这篇文章主要讲解了"MYSQL LOCKS监控的详细介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MYSQL LOCKS监控的详细介绍"吧!MYS
千家信息网最后更新 2024年10月10日MYSQL LOCKS监控的详细介绍

这篇文章主要讲解了"MYSQL LOCKS监控的详细介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"MYSQL LOCKS监控的详细介绍"吧!

MYSQL 性能问题中,一定包含 LOCKS 的问题,我想没人反对,但如何监控他,其实说句实话,没有看到特别多的好的解决方法。有两个极端,一个是本身在MYSQL上的程序本身基础打得好,所以MYSQL 基本上很少有DEAD LOCKS , 另外一个,恐怕是根本使用MYSQL的人就不知道怎么监控DEAD LOCK ,所以没有意识到这个问题。

首先死锁的检测默认是被打开的,并且INNODB 是自动的检测事务的私说,自动的会馆或者自动终结私说,innodb会尝试选择较小的事务去进行roll back,根据 DML操作中的事务的尺寸来进行判断。

相对来说如果你的 innodb_table_locks = 1 并且autocommit = 0的情况下,那解决私说的问题就只能动用 innodb_lock_wait_timeout 这个参数了,或祈求GOD help.

当然如果你关闭了innodb_deadlock_detect 这个参数,那你的死锁也是无法被检测到的,另外 innodb_lock_wait_timeout 这个参数的设置,就可以看出掌握这个数据库系统的人员是否老道。

死锁的成因如果解释起来,简单的解释就是 session a 掌握了资源 a ,但在处理事务的时候,不光需要a ,还需要资源b, 而 session b 掌握了资源b,而处理时不光需要b ,还需要a, 但不幸的是,在同一个时间,session 掌握了a ,去提取b , 而 session b 掌握了b 去提取a ,也不知道是 session a 最后拿到了 资源b 而解锁,还是session b 拿到了 a而解锁,最后MYSQL系统滴滴答答吹喇叭。 好吧不要打我,最后的结果就是一个事务被回滚,系统记录错误信息。

所以监控dead locks 或 locks 其实是很重要的一件事

1 你知道那个语句和那个语句发生了死锁

2 你知道是否有挽救的可能性

如果入行久了,马上的反映就是 show engine innodb status 去查看死锁,是这就是mysql 5.x (5.6之前)的方法, 并且很好用。(不知道,那你还是百度一下吧)。

现在进行LOCKS(不光是死锁,包括类似blocked 的信息)的监控,一般都需要使用 performance_schema来进行,(什么性能损失,你是有多缺钱,多加一点CPU, 内存你会死吗,浪费5% -10%的性能,换你老板问你为什么的时候,你能痛快的写出报告,还是只能瞎编,你自己看着办)。

怎么做,很多种方法,我们先来说说传统的方法

1 innodb_print_all_deadlocks

这个参数你要打开哟,否则你真的只能傻乎乎去看 show engine innodb sttatus , 并且如果发生很多死锁,那你会遗漏的信息会很多。同时打开这个参数还可以在ERROR log 中看到相关的所有的死锁信息。

2 确认你的wait/lock/metadata/sql/mdl 要打开, 然后你就可以去查看

你的metadata_locks 表,当然如果你还知道 threads,那你可以联合这两个tables 来将那两个语句之间进行了,那个session 和 那个session之间的矛盾,以及相关的语句会一目了然。

SELECT

performance_schema.threads.PROCESSLIST_ID,

performance_schema.metadata_locks.*

FROM

performance_schema.threads,

performance_schema.metadata_locks

WHERE

performance_schema.threads.THREAD_ID =performance_schema.metadata_locks.OWNER_THREAD_ID;

3 PT 工具 或者自己写一个脚本,来自动记录可能发生的死锁。

例如我们可以通过 pt-deadlock-logger 来进行相关的死锁鉴定

4 动态的查看innodb的 deadlock 数,可以进行动态的监控,尤其在新上项目后,或者硬件变动后可以第一时间发现问题。当然你需要先将 innodb_locks 和 innodb_lock_waits 这两个表搞搞清楚

感谢各位的阅读,以上就是"MYSQL LOCKS监控的详细介绍"的内容了,经过本文的学习后,相信大家对MYSQL LOCKS监控的详细介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

死锁 监控 问题 事务 参数 就是 两个 信息 方法 语句 资源 性能 系统 还是 学习 检测 之间 内容 动态 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 外包去工商银行软件开发 软件开发中单元测试是什么 网络技术专业都学习什么 车载网络技术相关企业 健康app是否需要服务器 广州服务器电源解决方案 传达学习 网络安全 模板网站数据库怎么建 迷你世界的网络安全手册 服务器安全狗防御量多少 华服互联网科技 面试 网络技术与应用练习题子网 广州天佑网络技术广告销售 合肥网络技术专业学院 企业网络安全三字经 数据库按时间进行查询 咸阳网络安全委员会 软件开发需遵循的基本原则 医院服务器外网端口 软件开发前景好的公司 网络安全手抄报设计色彩 为何方舟手游服务器进不去 上海教育直播软件开发 搞嵌入式软件开发的黄金年龄段 深圳宇轩网络技术有限公司环境 计算机网络技术培训意义 cf服务器怎么进房间 淘宝单机游戏玩几天连不上服务器 新知讯网络技术有限公司招聘 静安区新能源网络技术标准
0