《MySQL技术内幕:InnoDB存储引擎》读书笔记一

1、InnoDB主要引擎特色数据库

InnoDB是Windows发行版下默认的存储引擎,它有如下特色:并发

1)、支持事务,主要面向事务处理(OLTP)方面的应用函数

2)、行锁设计,支持外键高并发

3)、将数据放入一个逻辑的表空间性能

4)、使用多版本并发控制(MVCC)来得到高并发性,而且实现了SQL标准的四种隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE,默认为REPEATABLE级别;操作系统

5)、使用next-key locking策略避免幻读现象;设计

6)、提供了插入缓冲、二次写、自适应哈希索引、预读等功能日志

7)、表数据采用汇集方式索引

 

2、关键特性事务

1、插入缓冲

对于非汇集索引的插入或更新操做,不是每一次都直接插入索引页。而是先判断插入的非汇集索引页是否在缓冲池中,若在则直接插入,不然先放入插入缓冲池中。

插入缓冲需知足两个条件:

1)索引是辅助索引

2)索引不是惟一的

可经过命令SHOW ENGINE INNODB STATUS查看插入缓冲信息。

插入缓冲带来的是性能的提升。

2、两次写

两次写带来数据的可靠性;

解决部分写失效问题:当数据库正在从内存向磁盘写一个数据页时,数据库宕机,从而致使这个页只写了部分数据

原理图:

组成部分:

    内存中的doublewrite buffer,大小2M

    物理磁盘上共享表空间中连续的128页,两个区,共大小2M

工做过程:

         当缓冲池的脏页刷新时,并不直接写磁盘,而是先将脏页拷贝到内存中的doublewrite buffer中,而后该buffer分两次写,每次写入1M到共享表空间的物理磁盘上,而后当即调用fsync函数同步磁盘,避免缓冲写带来的问题。若是操做系统在将该页写入磁盘的过程当中崩溃了,则在恢复过程当中,InnoDB引擎可从共享表空间中的doublewrite中找到页的一个副本,将其拷贝到表空间文件,而后重作日志。

可以使用skip_innodb_doublewrite禁用两次写功能。

3、自适应哈希索引

InnoDB存储引擎会监控对表上的索引的查找,若观察到创建哈希索引能够带来速度的提高则创建哈希索引。InnoDB会自动根据访问的频率和模式来为某些页创建哈希索引。

相关文章
相关标签/搜索