Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2832077
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Mysql/postgreSQL

2016-08-17 15:45:20

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缓冲中找到页面的一个良好复制。


转载自
http://blog.csdn.net/gtuu0123/article/details/5598609

阅读(2533) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~