Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1171662
  • 博文数量: 220
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1769
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-13 16:19
个人简介

努力, 努力, 再努力

文章分类

全部博文(220)

文章存档

2018年(8)

2017年(46)

2016年(75)

2015年(92)

我的朋友

分类: Mysql/postgreSQL

2016-06-01 10:51:16

原文链接: http://blog.sina.com.cn/s/blog_45722cc00100wpn8.html

InnoDB使用模拟异步磁盘I/O:InnoDB创建许多线程来处理I/O操作,比如read-ahead(预读).

 

在InnoDB中有两个read-ahead试探:

(注:Innodb的记录在文件中的顺序是按照主键顺序存储)

(1)在连续read-ahead中,如果InnoDB注意到在表空间中对一个片断的访问方式是连续的,它就预先布置一批数据库页的读给I/O系统。

(2)在随机read-ahead中,如果InnoDB注意到表空间中的一些区域看起来进入完全读进缓冲池中的处理中,它就布置剩余的读到I/O系统。

 

InnoDB使用一个被称为doublewrite(双写)的新颖的文件刷新技术。它给操作系统崩溃或掉电后的恢复添加了安全,并且通过减少对fsync()操作的需要,它在多数Unix变种上改善了性能。

 

Doublewrite意为在向一个数据文件写页之前,InnoDB首先把它们写到一个毗邻的表空间区域,称为doublewrite缓冲。仅在写然后刷 新到doublewrite已经完成之后,InnoDB写页面到它们在表空间中恰当的位置。如果操作系统在写页面的中间崩溃,在恢复过程中,InnoDB 可以在随后从doublewrite缓冲中找到页面的一个良好复制
阅读(857) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~