MySQL进阶45讲【12】为什么你的MySQL偶尔会卡一下 淩亂°似流年 2024-05-07 22:31 89阅读 0赞 ## 1 前言 ## 平时的工作中,不知道大家有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 看上去,这就像是数据库“抖”了一下。今天,我们就一起来看一看这是什么原因。 ## 2 你的SQL语句为什么变“慢”了 ## 在前面的文章[MySQL进阶45讲【2】日志系统:一条SQL更新语句是如何执行的?][MySQL_45_2_SQL]中,介绍了WAL机制。InnoDB在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日志叫作redo log(重做日志),也就是《孔乙己》里咸亨酒店掌柜用来记账的粉板,在更新内存写完redo log后,就返回给客户端,本次更新成功。 做下类比的话,掌柜记账的账本是数据文件,记账用的粉板是日志文件(redo log),掌柜的记忆就是内存。 掌柜总要找时间把账本更新一下,这对应的就是把内存里的数据写入磁盘的过程,术语就是flush。在这个flush操作执行之前,孔乙己的赊账总额,其实跟掌柜手中账本里面的记录是不一致的。因为孔乙己今天的赊账金额还只在粉板上,而账本里的记录是老的,还没把今天的赊账算进去。 **当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。** [MySQL_45_2_SQL]: https://blog.csdn.net/qq_37284798/article/details/135617380
相关 MySQL进阶45讲【12】为什么你的MySQL偶尔会卡一下 MySQL进阶45讲【12】为什么你的MySQL偶尔会卡一下 淩亂°似流年/ 2024年05月07日 22:31/ 0 赞/ 90 阅读
相关 MySQL进阶45讲【10】MySQL为什么有时候会选错索引? MySQL进阶45讲【10】MySQL为什么有时候会选错索引? 绝地灬酷狼/ 2024年05月07日 22:31/ 0 赞/ 90 阅读
相关 MySQL进阶45讲【38】insert语句的锁为什么这么多? MySQL进阶45讲【38】insert语句的锁为什么这么多? 爱被打了一巴掌/ 2024年05月07日 22:28/ 0 赞/ 88 阅读
还没有评论,来说两句吧...