第2章 InnoDB存储引擎
来源:互联网 发布:chm生成软件 编辑:程序博客网 时间:2024/05/21 17:45
后台线程负责刷新内存池中的数据
多线程模型
后代线程:
1.Master Thread 核心线程 缓冲池数据异步刷新到磁盘
2、IO Thread IO请求回调
3.Purge Thread
+———————-+——-+
| Variable_name | Value |
+———————-+——-+
| innodb_purge_threads | 4 |
+———————-+——-+
4.Page Cleaner Thread
2.3.2 内存
1.缓存池[一块内存区域]
弥补磁盘读写慢的缺点
在数据库中进行读取页的操作, 首先将从磁盘读到的页存放在缓冲池中, 这个过程称为将页“FIX”在缓冲池中。 下一次再读相同的页时,首先判断该页是否在缓冲池中。 若在缓冲池中,称该页在缓冲池中被命中, 直接读取该页。 否则, 读取磁盘上的页。对于数据库中页的修改操作, 则首先修改在缓冲池中的页, 然后再以一定的频率刷新到磁盘
配置方法:innodb_buffer_pool_size
内存数据对象
允许多个缓存池实例,配置选项:innodb_buffer_pool_instances 默认为1
2.LRU List、 Free List和Flush List
缓存池算法LRU(最近最少使用)
页的默认大小 16KB
InnoDB 优化了LRU算法,加入了midpoint[LRU列表长度的5/8出]位置,
最新放入的页不放入列表的首部,而放入midpoint位置。
37 —列表尾端的37%的位置
INNODB_BUFFER_POOL_STATS 观察缓冲池运行状态
3.重做日志缓冲
日志在内存中的缓存—log buffer.
undo日志记录数据被修改前的值,用于事务失败时进行rollback,恢复数据库,读一致性
redo日志记录数据被修改后的值
2.4 Checkpoint技术
防止数据丢失,采用 Write Ahead log 策略—–当事务提交时,先写重做日志,再修改页
Checkpoint技术解决如下问题:
• 缩短数据库恢复时间[Checkpoint点之前的数据已经刷回磁盘,只需对之后的redo日志进行恢复]
• 缓冲池不够用时,将脏页刷新到磁盘
• 重做日志不可用时,刷新脏页
Checkpoint所做的事,将脏页刷回磁盘
2.5 Master Thread工作方式
具有最高优先级
2.6 InnoDB关键特性
◊ 插入缓存◊ 两次写◊ 自适应哈希索引◊ 异步IO◊ S刷新邻接页
2.6.1 插入缓冲
1。Insert Buffer
是物理页的一个组成部分
不是所有主键插入都是顺序的
聚集索引 -primary key
使用条件:辅助索引,索引不唯一
2.Change Buffer
视为Insert Buffer的升级
3.Insert Buffer的内部实现
数据结构:B+树
4.Merge Insert Buffer
发生场景:
◊ 辅助索引页被读取到缓存池中
◊ Insert Buffer Bitmap页追踪到该辅助索引页已无可用空间时;
◊ Master Thread
2.6.2 两次写
Insert Buffer 引擎性能提升,
doublewrite 保证数据页的可靠性
doublewrite:写入失效发生时,先通过页的副本来还原该页,再进行重做
2.6.3 自适应哈希索引 [ANI]
AHI要求,页的连续访问模式必须是一样的
启用AHI后, 读取和写入速度可以提高2倍, 辅助索引的连接操作性能可以提高5倍。
2.6.5 刷新邻接页
工作原理为: 当刷新一个脏页时, InnoDB存储引擎会检测该页所
在区(extent) 的所有页, 如果是脏页, 那么一起进行刷新
- 第2章 InnoDB存储引擎
- MySQL技术内幕:InnoDB存储引擎(第2版)
- innodb存储引擎(第2版) 读后感(一)
- 《MySQL技术内幕:InnoDB存储引擎》第2版笔记
- MySQL技术内幕 InnoDB存储引擎 第2版
- chpater 2 : InnoDB存储引擎
- InnoDB存储引擎--2、存储过程
- 读书笔记:第二章 innodb存储引擎
- 15.2. InnoDB存储引擎
- InnoDB数据库存储引擎
- InnoDB存储引擎Log
- InnoDB 存储引擎
- InnoDB存储引擎
- InnoDB存储引擎
- innodb 存储引擎
- MySQL InnoDB存储引擎
- MySQL存储引擎--InnoDB
- 优化Innodb存储引擎
- Android -Bundle类
- VC中实现弹出CEdit的气泡提示框
- SVM手写数字图像分类
- Elasticsearch如何更新mapping
- 神经网络识别字母+数字
- 第2章 InnoDB存储引擎
- Android音频驱动-ASOC之Machine
- opencv配置问题:由于找不到MSVR120D.dll程序无法继续执行
- Array对象的方法实现(1)----Array.prototype.push和Array.prototype.concat(实现常规参数的功能)
- LeetCode 236. Lowest Common Ancestor of a Binary Tree
- 常见的加密方式!
- C++——USACO Section 3.1 题解
- POJ
- javaseday32(画中画 表单 post get 提交方式)