Mysql InnoDB引擎原理(基于mysql5.7)

InnoDB简介

InnoDB的github地址:https://github.com/mysql/mysql-server/tree/5.7/storage/innobase 。InnoDB是一种平衡高可靠性和高性能的通用存储引擎。在MySQL 5.7中,InnoDB是默认的MySQL存储引擎。

InnoDB的主要优势:  InnoDB的MDL操作遵循ACID模型,具有提交,回滚和崩溃恢复功能的事务来保护数据;支持行级锁定和一致性读取提高了并发性和性能;InnoDB每个表都有一个称为聚簇索引的主键索引,用于组织数据以最小化主键查找的IO;InnoDB支持外键约束,使用外键,将检查 插入,更新和删除,以确保它们不会导致不同表之间的不一致。

 Mysql存储引擎整体架构图

mysql InnoDB存储引擎主要分为两大部分内存结构磁盘结构。其中内存结构由buffer pool(缓冲池),change buffer(改变缓冲区),adaptive hash index(自适应哈希索引),log buffer(日志缓冲区).四部分构成。磁盘结构由tables(表),indexes(索引),tablesspace(表空间),InnoDB Data Dictionary(InnoDB 数据字典),Doublewrite Buffer(双写缓冲区), Redo Log(重做日志), Undo Log(撤销日志) 七部分组成。

Mysql InnoDB引擎原理(基于mysql5.7)_第1张图片

                                                                      Mysql存储引擎整体架构图

InnoDB的内存结构

Buffer Pool(缓冲池)

buffer pool是主存中的一个区域,用于缓存表和索引数据。缓存池允许直接从内存处理常用数据来提升处理速度。在专用的服务器上,通常会将最多80%的物理内存分配给缓冲池。

为了提高大容量读取的效率,缓冲池被分成可容纳多行的页面。为了提高缓存管理的效率,缓冲池被实现为链接的页面列表;使用LRU算法的变体,很少使用的数据在缓存中老化。

你可能感兴趣的:(Mysql InnoDB引擎原理(基于mysql5.7))