Chinaunix首页 | 论坛 | 博客
  • 博客访问: 960162
  • 博文数量: 83
  • 博客积分: 32
  • 博客等级: 民兵
  • 技术积分: 2080
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 09:45
个人简介

努力学习,努力分享,努力.....在努力..努力离开..

文章分类

全部博文(83)

文章存档

2017年(3)

2015年(1)

2014年(47)

2013年(32)

分类: Mysql/postgreSQL

2013-10-27 13:47:21

(1)插入缓存
插入缓冲不是缓冲池的一个部分,它是物理页的一个组成部分.插入缓冲就是避免磁盘I/O随机写.因为顺序写是很快完成的,但随机写要磁盘寻道,要花费大量的I/O操作.对写离散随机写操作:
首先判断插入非聚集索引页是否在缓冲池中.如果在,则直接插入.如果不在,则先放入一个插入缓冲区,然后再以一定的频率执行插入缓冲和非聚集索引页子节点的合并操作.
插入缓冲的使用需要满足以下两个条件:
1.      索引是辅助索引
2.      索引不是唯一的
当满足以上两个条件时,InnoDB存储引擎会使用插入缓冲.
使用show engine innodb status\G;
使用IBUF_POOL_SIZE_PER_MAX_SIZE控制插入缓存


(2)两次写
当数据库正在从内存向磁盘写一个数据页时,数据库宕机,从而导致这个只写了一部分页数据,这就是部分写失效,它会导致数据丢失。这时是无法通过重做日志恢复的,因为重做日志记录的是对页的物理修改,如果页本身已经损坏,重做日志也无能为力。
两次写其原理是这样的:
1)当刷新缓冲池脏页时,并不直接写到数据文件中,而是先拷贝至内存中的两次写缓冲区。
2)接着从两次写缓冲区分两次写入磁盘共享表空间中,每次写入1MB
3)待第2步完成后,再将两次写缓冲区写入数据文件
参数skip_innodb_doublewrite可以禁止两次写,如果你有多台slave server为了提高性能可以禁用此参数但是在master server强烈推荐开启



(3)自适应哈希索引

InnoDB存储引擎会监控对表上索引的查找,如果观察到建立哈希索引可以带来速度的提升,则建立哈希索引,所以称之为自适应(adaptive) 的。自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。而且不需要将整个表都建哈希索引,InnoDB存储引擎会自动根据访问的频率和模式 来为某些页建立哈希索引。参数innodb_adaptive_hash_index可以禁用

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