MySQL性能测试及调优中的死锁处理方法

这篇具有很好参考价值的文章主要介绍了MySQL性能测试及调优中的死锁处理方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下从死锁检测、死锁避免、死锁解决3个方面来探讨如何对MySQL死锁问题进行性能调优。

死锁检测

通过SQL语句查询锁表相关信息:

(1)查询表打开情况

SHOW OPEN TABLES WHERE IN_USE> 0
  • 1

(2)查询锁情况列表

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS
  • 1

(3)查询锁等待信息,其中blocking_lock_id是当前事务在等待的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS
  • 1

(4)查询死锁日志

SHOW ENGINE INNODB STATUS
1
这条语句只能显示最新的一条死锁,无法完全捕获到系统发生的所有死锁信息。

如果想要记录所有的死锁日志,需要打开innodb_print_all_deadlocks参数,将所有的死锁日志记录到errorlog中。

(5)查询锁等待时间

SHOW STATUS LIKE '%lock%'
  • 1

死锁避免

当有死锁发生时,通常是由于项目的程序中出现了冗长的事务,或是由于隔离级别设置的不合适等。

我们需要在事务使用中注意以下几点:

(1)尽量保持事务的短小精悍,做出一系列关联的更新操作后立即提交事务,以降低死锁的可能性。特别是不要让有关联的MySQL会话长时间挂起未提交的事务。

(2)建议使用更低的隔离级别,如READ COMMITTED。

(3)在同一事务内修改多张表,或一张表内的不同行时,每次以相同的顺序执行操作。以便让事务形成清晰的锁操作队列而规避死锁。

死锁解决
MySQL数据库通过死锁检测(innodb_deadlock_detect)和死锁超时时间(innodb_lock_wait_timeout)这两个参数来进行死锁解决。

死锁检测(innodb_deadlock_detect):在MySQL 8.0中,增加了一个新的动态变量innodb_deadlock_detect,用来控制InnoDB是否执行死锁检测。

该参数的默认值为ON,即打开死锁检测。开启后InnoDB在加锁的时候会检测加锁后是否会造成死锁,如果会加锁,就回滚代价最小的那一个事务。

死锁超时时间(innodb_lock_wait_timeout):这个参数可以用来处理检测不出来的死锁,或是避免长时间等待较长的事务的情况。

对于高并发的系统,当大量线程等待同一个锁时,死锁检测可能会导致性能的下降。

此时,如果禁用死锁检测,而改为依靠参数innodb_lock_wait_timeout来释放长时间占用锁资源的事务可能会更加高效。

也就是说,在确认死锁检测功能影响了系统的性能并且禁用死锁检测不会带来负面影响时,可以尝试关闭innodb_deadlock_detect选项。

另外,如果禁用了InnoDB死锁检测,需要及时调整参数innodb_lock_wait_timeout的值,以满足实际的需求。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

MySQL性能测试及调优中的死锁处理方法,自动化测试,软件测试,技术分享,mysql,数据库

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

MySQL性能测试及调优中的死锁处理方法,自动化测试,软件测试,技术分享,mysql,数据库

MySQL性能测试及调优中的死锁处理方法,自动化测试,软件测试,技术分享,mysql,数据库 

MySQL性能测试及调优中的死锁处理方法,自动化测试,软件测试,技术分享,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-798117.html

到了这里,关于MySQL性能测试及调优中的死锁处理方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch:集群关键指标及调优指南

    CPU使用率是指在一段时间内CPU执行程序的百分比,它是衡量系统资源利用率的一种指标。 1.1 详细说明: 在Elasticsearch中,高的CPU使用率通常意味着节点正在执行大量的计算任务,这可能是因为索引和搜索操作的负载较大,也可能是因为节点正在进行数据复制和分片重新平衡等

    2024年02月09日
    浏览(34)
  • 【Elasticsearch】 实际生产中的监控及调优

       目录 监控 API 调优 1、CPU使用率 ES中导致CPU 变高的因素 ES导致CPU 变高的解决方案          2、内存使用率 ES内存使用率 过高的可能因素 ES内存使用率 过高的处理方案 3、ES磁盘使用率 ES磁盘使用率过高的可能因素 4、ES 中GC频次 ES 中GC频次增加的可能因素 ES 中GC频次降低

    2024年02月15日
    浏览(34)
  • Elasticsearch集群关键指标及调优指南【全网最全】

    CPU使用率是指在一段时间内CPU执行程序的百分比,它是衡量系统资源利用率的一种指标。 1.1 详细说明: 在Elasticsearch中,高的CPU使用率通常意味着节点正在执行大量的计算任务,这可能是因为索引和搜索操作的负载较大,也可能是因为节点正在进行数据复制和分片重新平衡等

    2023年04月18日
    浏览(30)
  • 【实践】随机森林算法参数解释及调优(含Python代码)

    上篇文章梳理了随机森林的各理论要点,本文首先详细解释了随机森林类的参数含义,并基于该类讲解了参数择优过程。 随机森林类库包含了RandomForestClassifer类 , 回归类是RandomForestRegressor类 。RF的变种ExtraTress也有ExtraTressClassifier类和ExtraTressRegressor类。由于这四个类的参数基

    2024年01月23日
    浏览(38)
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Apache Kafka 官方提供了两个客户端性能测试脚本,它们的存放位置如下: 生产者性能测试脚本:$KAFKA_HOME/bin/kafka-producer-perf-test.sh 消费者性能测试脚本:$KAFKA_HOME/bin/kafka-consumer-perf-test.sh kafka-producer-perf-test.sh 支持测试的性能指标包括:吞吐量(throughput)、最大时延(max-latenc

    2024年02月04日
    浏览(54)
  • openGauss学习笔记-271 openGauss性能调优-TPCC性能调优测试指导-测试MOT-TPCC性能

    本章节主要介绍openGauss数据库内核基于鲲鹏服务器和openEuler操作系统,为了达到最佳TPMC性能所依赖的关键系统级调优。 271.1 TPC-C简介 TPC-C基准是衡量联机事务处理(OLTP)系统性能的行业标准基准。它基于一个复杂的数据库和许多不同的事务类型。这些事务类型在此基准上执

    2024年04月26日
    浏览(32)
  • MySQL什么情况下会死锁,发生了死锁怎么处理呢?

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:MySQL的100个知识点。 🎉欢迎 👍点赞✍评论⭐收

    2024年02月08日
    浏览(27)
  • ceph集群中RBD的性能测试、性能调优

    参考:https://blog.csdn.net/Micha_Lu/article/details/126490260 rados bench为ceph自带的基准测试工具,rados bench用于测试 rados存储池 底层性能,该工具可以测试写、顺序读、随机读三种类型. 写入速率测试: 顺序读速率测试: 随机读速率测试: rbd bench-write为ceph自带的基准性能测试工具,

    2024年02月14日
    浏览(38)
  • Java体系性能测试进阶必须了解的知识点——死锁分析和锁竞争分析

    所谓 死锁 ,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。对于锁更好的理解,先要理解monitor这个概念! monitor直译过来是监视器的意思,专业一点叫管程。monitor是属于编程语言级别的,它的出现

    2024年02月07日
    浏览(33)
  • redis性能测试及瓶颈分析调优

    一、简介 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API mysql与redis的区别: 类型上mysql是关系型数据库,而redis是缓存数据库; 作用上mysql用于持久化的存储数

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包