数据库进阶七篇(一)-- InnoDB存储引擎

谦虚使人退步,如果自己都不为自己骄傲,那别人怎能为你骄傲?

--《天珠变》

目录

​ 

1.Mysql基本架构

 2.存储引擎比较

3.InnoDB存储引擎

3.1 内存

3.1.1 缓冲池

3.1.2 LRU List

3.1.3 Free List

3.1.4 Flush List和脏页

3.1.5 change Buffer

3.1.6 自适应哈希索引 AHI

3.1.7 重做日志缓冲

3.2 后台线程

3.2.1 Master Thread

3.2.2 IO Thread

3.2.3 Pruge Thread

3.2.4 Page Cleaner Thread


1.Mysql基本架构

Mysql架构如上图所示,包括

  • 管理服务和工具组件:系统管理和控制工具,例如备份恢复、Mysql复制、集群等

  • 连接池组件:管理、缓冲用户的连接,线程处理等需要缓存的需求

  • SQL接口组件:接受用户的SQL命令,并且返回用户需要查询的结果

  • 查询分析器组件:SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构)

  • 优化器组件:SQL语句在查询之前会使用查询优化器对查询进行优化

  • 缓存组件:如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据

  • 插件式存储引擎:存储引擎是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

  • 物理文件 

 2.存储引擎比较

下表是Mysql几种存储引擎的对比,oracle不存在存储引擎的概念,同时列入oracle进行简单对比 

  • InnoDB存储引擎

    从MySql 5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。InnoDB通过多版本并发控制(MVCC)获得高并发性,支持事务并实现了四种隔离级别,支持行级锁和外键。InnoDB每张表都是按照主键的顺序存放的,如果没有显示指定主键,InnoDB存储引擎会给每行生成一个6字节的ROWID作为主键。

  • MyISAM存储引擎

    MyISAM存储引擎不支持事务,采用表锁设计,支持全文索引,在Mysql 5.5.8版本之前是默认的存储引擎。MyISAM只缓存索引文件但不会缓存数据文件,数据文件由操作系统进行缓存,其他的存储引擎是有LRU算法进行数据文件的缓存。

  • Memory存储引擎

    Memory存储引擎使用内存存储数据,所以速度非常快,但是数据库重启或崩溃,数据会消失,适合用于存储临时数据的临时表。Memory默认使用哈希索引,而不是B+树索引。

  • Archive存储引擎

    Archive存储引擎只支持Insert和Select,使用zlib算法对数据进行压缩后存储,压缩比可以达到10:1,非常适合存储归档数据,使用行锁提供高性能的并发新增操作。

3.InnoDB存储引擎

优势:InnoDB是第一个完整支持ACID的Mysql存储引擎,特点是行锁设计、支持MVCC、支持外键、支持一致性非锁定读,同时被设计成最有效的利用内存和CPU,InnDB在1.2.x版本开始支持全文索引。

InnoDB在实现上维护了一个内存池,内存池有多个内存块组成,同时维护了多个后台线程

内存池负责

  • 维护所有进程/线程需要访问的多个内部数据结构

  • 缓存磁盘上的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光光-Leo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值