innodb的dirty page满了的写盘机制
原创
©著作权归作者所有:来自51CTO博客作者新颖的原创作品,请联系作者获取转载授权,否则将追究法律责任
当需要在Buffer
pool分配一个page,但是已经满了,并且所有的page都是dirty的(否则可以释放不dirty的page),通常是不会发生的。这时候必须
flush
dirty pages to
disk。这种情况将会记录到Innodb_buffer_pool_wait_free中。一般地,可以可以通过启动参数
innodb_max_dirty_pages_pct控制这种情况,当buffer
pool中的dirty page到达这个比例的时候,将会强制设定一个checkpoint,并把dirty page flush到disk中。
这种情况下,dirty page的LSN就起作用了。一个是已经Flush到data
file中最后一个LSN,还一个是修改了该Page的最后一个LSN。第一,InnoDB检查修改了该Page的最后一个LSN是否比log文件中最近
的log记录的LSN大,只有当log赶上了修改了该Page的最后一个LSN的时
候,才会将数据写到磁盘。换句话说,数据页不会写盘,直到相应的log记录需要写盘的时候。这就是先写日志策略。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Fisrt Node-Webkit App
1.什么是Node-Webkit基于node.js和chromium的应用程序实时运行环境,可运行通过HTML(5)、CSS(3)、Javascript来编写的本地应用程序
nodejs node-webkit html node.js 应用程序 -
MySQL怎么查询LSN
在MySQL中查询LSN(Log Sequence Number,日志序列号)通常涉及查询InnoDB存储引擎的内部状态或相关系统变量,因为
数据库 mysql MySQL 系统变量 二进制日志