MySQL Innodb存储引擎简述

一、InnoDB存储存储引擎特征

在一条读写请求的SQL语句发送到MySql数据库的时候,数据并不会直接操作磁盘文件,会先操作InnoDB存储引擎内存池,进行磁盘文件的读写。通过InnoDB存储引擎内存池中的缓冲的数据页、索引页、索信息、重做日志等数据配合相关的后台线程,共同实现了4个重要的特征,包括:行级锁定、事务控制、并发控制(MVCC)、外键约束

二、InnoDB存储引擎内存池

InnoDB存储引擎的数据存储在磁盘中,为了提高数据的读写效率,需要将数据缓存在内存中,这个区域就形成了一块缓冲池;

1、当客户端读取数据的时候,会先读取缓冲池中数据,如果缓冲池数据不存在,则将数据从磁盘以页为单位,读取到缓冲区中;

2、当客户端修改数据的时候,会先修改缓冲池中的页,然后再通过触发checkpoint机制刷回磁盘。

MySql数据库可以通过下面的语句进行缓冲区的设置

-- 将缓冲区设置为15GB
innodb_buffer_pool_size=15GB

1、缓冲池中数据对象

(1)、数据页主要数据信息:

  • 实际数据,包含多行数据,按照主键进行排序;

  • 页头、页目录、行目录、空闲空间等。

(2)、缓存池淘汰算法

数据库中的缓冲池是通过LRU(最近最少使用)算法来进行管理的,和常规的LRU算法不同,在InnoDB存储引擎中,最新读取到的页,不会放到LRU列表的首部,而是会放到midpoint位置,这个可以防止在意外执行一次全表扫描后,导致缓冲池全面被更新,但是这个全表扫描的语句只是偶发。当midpoint在经过一定时间后,以及存在,则会进入到长久列表中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值