(转)InnoDB之Dirty Page、Redo log
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,作者:苏普 | 【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】地址:http://rdc.taobao.com/blog/dba/html/317_innodb-dirty-page-
千家信息网最后更新 2025年01月25日(转)InnoDB之Dirty Page、Redo log
[@more@]
作者:苏普 | 【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】
地址:http://rdc.taobao.com/blog/dba/html/317_innodb-dirty-page-redo-log.html
在InnoDB中,buffer pool里面的dirty page一方面可以加快数据处理速度,同时也会造成数据的不一致(RAM vs DISK)。本文介绍了dirty page是如何产生,以及InnoDB如何利用redo log如何消除dirty page产生的数据不一致。
[@more@]
- 当事务(Transaction)需要修改某条记录(row)时,InnoDB需要将该数据所在的page从 disk读到buffer pool中,事务提交后,InnoDB修改page中的记录(row)。这时buffer pool中的page就已经和disk中的不一样了,我们称buffer pool中的page为dirty page。Dirty page等待flush到disk上。
- dirty page既然是在Buffer pool中,那么如果系统突然断电Dirty page中的数据修改是否会丢失?这个担心是很有必要的,例如如果一个用户完成一个操作(数据库完成了一个事务,page已经在buffer pool中修改,但dirty page尚未flush),这时系统断电,buffer pool数据全部消失。那么,这个用户完成的操作(导致的数据库修改)是否会丢失呢?答案是不会 (innodb_flush_log_at_trx_commit=1)。这就是redo log要做的事情,在disk上记录更新。
- redo log在每次事务commit的时候,就立刻将事务更改操作记录到redo log。所以即使buffer pool中的dirty page在断电时丢失,InnoDB在启动时,仍然会根据redo log中的记录完成数据恢复。
- redo log的另一个作用是,通过延迟dirty page的flush最小化磁盘的random writes。(redo log会合并一段时间内TRX对某个page的修改)
- 正常情况下,dirty page什么时候flush到disk上?
1).redo log是一个环(ring)结构,当redo空间占满时,将会将部分dirty page flush到disk上,然后释放部分redo log。这种情况可以通过Innodb_log_wait(SHOW GLOBAL STATUS)观察,情况发生该计数器会自增一次。
2). 当需要在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中。
3).检测到系统空闲的时候,会flush,每次64 pages。 - 涉及的InnoDB配置参数:innodb_flush_log_at_trx_commit、innodb_max_dirty_pages_pct;状态参数:Innodb_log_wait、Innodb_buffer_pool_wait_free。
参考文献
- http://mysqldump.azundris.com/archives/78-Configuring-InnoDB-An-InnoDB-tutorial.html
- http://dev.mysql.com/doc/refman/5.0/en/innodb.html
数据
事务
情况
时候
参数
系统
一致
作者
可以通过
数据库
用户
部分
原始
最小
必要
一方
事情
作用
出处
参考文献
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库查询pc机的平均速度
软件开发成本构成书面说明
防止网络安全诈骗的标语
hp服务器维保
电脑桌面下载软件开发
程序员家用服务器配置方案
医院自助机 网络安全
网络安全手抄报的装饰
白云网络安全建设怎么选择
服务器内存条能耐多少高温
腾讯云服务器网卡是内网
数据库表损坏
openvpn服务器安装
推广普通话网络安全手抄报
网络安全测试动态分析
台南天气预报软件开发
江西2021网络安全专家
软件开发团队组织结构图
数据库时间转换
辽宁特色软件开发诚信经营
服务器进不了网站后台
微信号提示违反网络安全法
山东盼达网络技术有限公司
社交软件开发学什么语言
戴尔服务器系统有哪些
数据库的定界符有哪3种
数据库外关键字约束
科技互联网行业特点
手机网络安全检测平台
核心技术人员删除服务器数据