Innodb引擎SQL执行的BufferPool缓存机制
以上图片把整个流程描绘的已经很清楚了,简单罗列如下
问题总结
如果sql执行过程中出现宕机停止的的情况,Mysql是怎么保证数据的准确性的呢?
如果执行过程中出现宕机停止的的情况,Mysql重新启动后缓冲区会自动去redo日志里加载最新的数据来保证与磁盘数据的准确性与一致性。
为什么Mysql不能直接更新磁盘上的数据而是设置这么一套复杂的机制来执行SQL了?
因为来一个请求就直接对磁盘文件进行随机IO,然后更新磁盘文件里的数据性能可能相当差。因为磁盘随机IO的性能是非常差的,所以直接更新磁盘文件是不能让数据库抗住很高并发的。Mysql这套机制看起来复杂,但它可以保证每个更新请求都是更新内存BufferPool,然后顺序IO日志文件,同时还能保证各种异常情况下的数据一致性。更新内存的性能是极高的,然后顺序IO磁盘上的日志文件的性能也是非常高的,要远高于随机IO磁盘文件。正是通过这套机制,才能让我们的MySQL数据库在较高配置的机器上每秒可以抗下几干的IO请求。
----------------部分内容从网上获取,如有侵权,请告知删除------------------