MySQL慢查询中的commit慢和binlog中慢事务有什么区别


这篇文章主要介绍了MySQL慢查询中的commit慢和binlog中慢事务有什么区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL慢查询中的commit慢和binlog中慢事务有什么区别文章都会有所收获,下面我们一起来看看吧。在分析性能问题的时候慢查询和binlog慢事务是常用的手段。最近在分析一个慢查询的,发现其中包含了大量的commit语句慢,但是在分析binlog慢事务的时候不能完成匹配。比如这段时间commit的语句可能有1000个,但是慢事务可能只有100个,这个差得也太多了,那么为什么会出现这种现象呢?慢事务 对于一个显示提交的(insert)事务通常如下:GTID_LOG_EVENT和XID_EVENT是命令‘COMMIT’发起的时间。QUERY_EVENT是第一个‘Insert’命令发起的时间。MAP_EVENT/WRITE_ROWS_EVENT是每个‘Insert’命令发起的时间。因此我们通常通过XID_EVENT的时间减去QUERY_EVENT的时间就得到了一个慢事务时间,当然如果是自动提交的则不能这么计算,因为各个event都是语句发起的时间。commit 慢的可能性我们知道commit慢最可能的地方在binlog的刷盘或者等待半同步从库ACK,但是binlog中XID EVENT的时间却不包含这部分时间,也就是说binlog慢事务和慢查询中的commit记录的不是一个时间段。简要说明如果我们以如下事务为例,进行简要说明判定in免费云主机域名sert语句是否慢的标准是T2-T1(-锁时间)判定commit语句是否慢的标准是T4-T3判定慢事务的标准是T3-T1因此慢事务的判定和慢查询中commit慢的判定几乎没有什么交集,因此出现这种情况也是正常的,下面来证明。主库:半同步超时时间为999999999。从库:设置sync_relay_log=1,并且断点设置在MYSQL_BIN_LOG::flush_and_sync函数上,本函数是从库每次event写到relay log后受到sync_relay_log=1的影响必须要落盘的判定函数。这样人为在断点处等待一下就显著的拉长了commit的时间,同时也证明半同步慢会影响commit慢,如下:我们来分析一下慢查询和binlog,这里加入了sleep(10)拖长了事务commit时间,因为insert太快了。binlog慢事务 22:20:54(T2) – 22:20:43(T1) = 11秒左右(我们加入了sleep(10))慢查询中的commit慢 22:21:15(T4) – 22:20:54(T3) = 21秒这里很显然了慢查询记录的commit慢明显不包含在慢事务中。关于“MySQL慢查询中的commit慢和binlog中慢事务有什么区别”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL慢查询中的commit慢和binlog中慢事务有什么区别”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: vue引入less的方法是什么

本篇内容主要讲解“vue引入less的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue引入less的方法是什么”吧!1.首先,在vue-cli中创建一个vue.js项目;vue create proj…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/13 09:40
下一篇 03/13 09:40

相关推荐