1、独立表空间 后缀名.ibd
系统表空间
一个表空间存储的数据容量计算:4字节记录页,大概是2的32次方个页,一页16KB , 合计容量:2^32 * 16kb = 64T
2、数据存储
页(64)= 区 注:连续分配,按区分配 ,增加顺序读,减少随机读 ,一个页面大小:16KB
区(256)= 组
组 (2) = 段
段 = 叶结点段+非页节点段 注:逻辑划分
3、innodbd三大特性
1) 双写缓冲区/双写机制 (安全+性能)
Flush技术-内存刷出到IO设备
解决安全性问题,性能下降10%
4 KB扇区写一页16KB需要写4次
双写缓冲区写失败处理方案,部分页写入失败问题(性能慢):
1)B+tree数据读取原始数据 2)redo日志恢复数据
redolog记录每一个页面的物理操作,但是redo里面没有全量记录
Max Row ID字段,全部表使用这一个自增长ID
2)自适应哈希索引(Adaptive Hash Index, AHI)
AHI的设计思想是数据库自优化,不需要DBA对数据库进行手动调整,只能选择开启或者关闭。我们可以通过如下命令查看innodb AHI的使用情况.
3)Buffer pool
一次至少加载一页,依据局部性原理,很快会被使用
innodb_buffer_pool_size 最小5M,缓存页 + 控制块 占用5%空间
free链表 把所有控制块连接起来,记录所有空闲页,加载页面时,先到free链表中读取,使用并移除
Hash表 确认页是否在pool里面,value=页,key=表空间号+页号
Flush链表: 脏页的处理
LRU链表(最近最少使用Least Recently Used):BUfferpool不够用的时候,进行计算的算法,记录页的当前使用情况
WAL 机制
https://www.cnblogs.com/mengxinJ/p/14211427.html