MySQL调优-Innodb引擎SQL执行的BufferPool缓存机制

目录

Innodb引擎SQL执行的BufferPool缓存机制

为什么Mysql不能直接更新磁盘上的数据而且设置这么一套复杂的机制来执行SQL了?

为什么直接更新磁盘是随机读写?为什么读写磁盘的日志文件是顺序读写?

为什么不直接读写磁盘而是选择读写BufferPool缓存池?


Innodb引擎SQL执行的BufferPool缓存机制

processOn自制图片链接:

Innodb引擎SQL执行的BufferPool缓存机制| ProcessOn免费在线作图,在线流程图,在线思维导图

MySQL调优-Innodb引擎SQL执行的BufferPool缓存机制_第1张图片

为什么Mysql不能直接更新磁盘上的数据而且设置这么一套复杂的机制来执行SQL了?

因为来一个请求就直接对磁盘文件进行随机读写,然后更新磁盘文件里的数据性能可能相当的差。

因为磁盘的随机读写的性能是非常差的,所以我们如果说直接更新磁盘文件的话,是不能让数据库抗住很高并发的。

MySQL这套机制看起来复杂,但是它可以保证每个更新请求都是更新内存BufferPool,然后顺序写日志文件,同时还能保证在异常情况下的数据一致性。

更新内存的性能是极高的,然后顺序写磁盘上的日志文件的性能也是非常高的,要远高于随机读写磁盘文件。无论是更新内存还是顺序读写磁盘上的日志文件都要比随机读写磁盘文件的性能高出2到3个数量级!这个性能是高出很多的!!!

正是通过这套机制,才能让我们的MySQL数据库在较高配置的机器上每秒可以抗下几干的读写请求。如果直接使用更新磁盘的方式,最多可以扛起几十,最多几百的并发。

为什么直接更新磁盘是随机读写?为什么读写磁盘的日志文件是顺序读写?

(1) 对于磁盘而言,我们可能一开始是按照顺序依次进行添加数据,但是随着程序的进行,我们可能会对磁盘进行随机删除或增加。这个时候顺序就变得随机了,当我们再去读写一个数据的时候,就不可以像之前从第一个开始读起,因为已经变化为随机分布了,所以对磁盘就变成随机读写了。

(2)对于磁盘的日志文件,我们千百年不做一次修改或更新删除。我们会按照程序执行的时间顺序,从前往后依次进行保存磁盘的日志文件,所以是顺序读写的。

为什么不直接读写磁盘而是选择读写BufferPool缓存池?

其实这个问题前面都解释了,因为读写BufferPool缓存池的性能跟直接读写内存差不多,要比直接读写磁盘的性能高出2到3的数量级。

你可能感兴趣的:(MySQL高级调优,mysql,sql,缓存)