
InnoDB架构
内存架构
- Buffer Pool
主内存的一块区域 , InnoDB在表和索引数据被访问的时候缓存它 。 在专用服务器上 , 高达80%的物理内存通常分配给buffer pool 。 配置项:innodb_buffer_pool_size , 正常推荐设置50%-75%的系统内存
实现为page链表 , 缓存里很少的数据会使用LRU算法过时掉
- Change Buffer
当二级索引page不在buffer pool时 , 缓存对这些二级索引page的更改 。 对于buffer的更改 , 稍后当page被其他读操作加载进buffer pool的时候 , 会进行合并
- 在内存中 , change buffer占用部分的buffer pool 。 在磁盘上 , change buffer是系统表空间的一部分 , 当数据库服务器关闭的时候 , 索引得更改将在其中进行缓存
- Adaptive Hash Index
自适应Hash索引 , 使InnoDB在具有适当的工作负载和有足够内存的buffer pool组合的系统上 , 执行起来更像内存中的数据库 , 而不会牺牲事务特性和可靠性 。
根据观察到的搜索模式 , 使用索引key的前缀建立hash索引 。 hash索引是根据需要为经常需要访问的索引page构建的 。
如果一个表差不多可以整个放进主内存 , 那么hash索引通过启用任何元素的直接查找来加快查询 , 将索引值转换为一种指针 。
- Log Buffer
持有将要被写入磁盘上的日志文件的内存区域 。 log buffer的内容会定期刷写到磁盘 。 默认16MB 。 大的log buffer能让大的事务运行而不需要在事务提交前将redo log数据写到磁盘上 。 所以如果有事务更新、插入或者删除很多行 , 增大log buffer能减少磁盘IO
- 表 Tables
- 索引 Indexes
聚簇索引能加快查询 , 因为索引搜索能直接指向包含行数据的page 。 如果表很大 , 聚簇索引通常能够节省磁盘IO操作
聚簇索引之外的其他所有叫做二级索引 。 在innodb里 , 二级索引的每个记录都包含了行的主键列 , 以及为二级索引指定的列
如果主键key很长 , 二级索引也会使用更多的空间
InnoDB索引是B-Tree结构 , 空间索引是R-Tree结构 。 索引记录存储在B-Tree或R-Tree的叶子page上
- 表空间 Tablespaces
- system表空间
存储change buffer的区域 。 如果表创建在system表空间而不是file-per-table或general表空间 , 它也可能存储表和索引数据 。
它可以有一个或多个数据文件 , 默认是单个系统表空间数据文件 , 名称为ibdata1
- File-Per-Table表空间
包含单个InnoDB表的数据和索引 , 存储在文件系统的单个数据文件里
文件名为:table_name.ibd
- General表空间
通过使用CREATE TABLESPACE语法创建的共享InnoDB表空间
和system表空间类似 , 能够存储多个表的数据的共享表空间
相对于file-per-table表空间 , 通用表空间有潜在的内存优势 。 服务器会在表空间的生命周期内将表空间的元数据保留在内存内 , 多个表在数量更少的通用表空间的占用表空间元数据的内存会更少
- Undo表空间
包含undo日志 , 它是记录的集合 , 包含了怎么撤销事务对聚簇索引最新的修改的信息
Undo日志默认存储在system表空间 , 但也可以存储在一个或多个undo表空间里
- Temporary表空间
包含Session临时表空间 , 一个全局临时表空间
session临时表空间存储着用户创建的临时表 , 以及当innodb配置为磁盘内部临时表存储引擎时优化器创建的内部临时表(从MYSQL8.0.16起磁盘内部临时表使用的存储引擎永远是InnoDB)- 平时大家输入汉字时一般都习惯用拼音输入法|怎么在电脑上把不认识的字打出来
- Java|24位博主,带你了解自媒体的真相
- 华为|不同职业的人怎么选华为PC?带你对号入座
- 域名|认识松下Lumix DC-G95(G90)
- 骨传导耳机|骨传导耳机伤耳朵吗?带你一分钟了解骨传导耳机
- 华硕|双12大促来了!带你种草全新华为“书房三宝”
- 北大|北大天才少年“还俗僧人”柳智宇宣布恋情:出家时就认识她了 女方未提买房买车
- 数学|北大数学天才柳智宇还俗后宣布恋情:出家时就认识她了 符合找女友标准
- 短视频|【海归求职网CareerGlobal】13年500强企业工作经验资深行业顾问带你深入了解产品经理岗位!
- 燃气热水器|双增压零冷水,这冬天云米AI燃气热水器Super带你酣畅淋漓地洗澡
