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

一、InnoDB主要引擎特点

InnoDB是Windows发行版下默认的存储引擎,它有以下特点:

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

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

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

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

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

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

7)、表数据采用聚集方式

 

二、关键特性

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会自动根据访问的频率和模式来为某些页建立哈希索引。

转载于:https://my.oschina.net/u/1015154/blog/801090

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值