innodb doublewrite

 

#努力第6天#innodb_lru_scan_depth每个缓冲池最大脏页刷新页数checkpoint
innodb fuzzy checkpoint
master thread checkpoint
从flush_list中进行刷新
flush_lru_list check point
lru需有差不多100个空闲页
async/sync flush checkpoint 
重做日志重用
dirty page too much checkpoint 
innodb_max_dirty_pages_pct
sharp checkpoint 
将所有的脏页都刷新回磁盘
刷新时系统hang住
innod关闭时使用
innodb_fast_shutdown={1|0

doublewrite
目的:数据写入的可靠性,防止页部分写
partial write
16k的页只写入了4k 6k 8k 12k的情况
不可以通过redo log进行恢复

存在一个段对象doublewrite

2M大小(both file and memory)
刷脏页的时候先把数据写入doublewrite 再写入到磁盘上
写入doublewrite的时候 一次性写2m的数据
性能开销
doublewrite写入是顺序的
性能开销取决于写入量
通常5%到25%
slave服务器考虑是否关闭
innodb_doublewrite
什么时候可以关闭doublewrite
磁盘
Fusion-io
文件系统
ZFS
btrfs
--skip-doublewrite

log sequence number 6531937903
log flushed up to 6531937903
pages flushed up to 6531937903
last checkpoint at 653193789
内存里的lsn
日志写到磁盘上的lsn
页刷新的最新的lsn值 new_modification
页的old _modification
last是flush list刷新的

insert buffer(在共享表空间中 持久化的)
提高辅助索引的插入性能
none unique secondary index
空间换时间 批量插入
先把二级索引缓存在insert buffer里 读到的时候再批量写到索引里
insert buffer潜在问题
最大可以使用二分之一缓冲池内存
innodb_change_buffer_max-size
shutdown不进行insert buffer记录的合并
insert buffer开始进行合并时插入性能开始下降

为的是减少页的随机io,如果页已经在内存里 不用缓存 直接插入
5.5改为change buffer
flush neighbor page
试图刷新页所在区中的所有脏页
传统机械磁盘有效
ssd关闭此功能
mysql 5.6 innodb_flush_neighbors=0

 

转载于:https://www.cnblogs.com/lvjinping/p/9197614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值