数据页存储结构
- 16KB



- 文件头:38个字节
- 数据页头:56个字节
- 最大记录、最小记录:26个字节
-
表空间
物理层面上,表空间就对应一个磁盘文件“表名.ibd”,系统表空间对于多个磁盘文件
数据区- extent
一个数据区对应64个连续的数据页
- 每个数据页16KB,所以一个数据区就是1MB
-
特殊信息
对于一个表空间,他的第一组数据区的第一个数据区的前三个数据页是固定的,存放描述信息
- FSP_HDR:存放表空间和这一组数据区的属性信息
- IBUF_BITMAP:这一组数据页的insert buffer的信息
- INODE:也是存放一些特殊信息
这个表空间的其他各组数据区的第一个数据区的前两个数据页,也是存放特殊信息
磁盘随机读写
从磁盘读取数据页,是随机读写
随机读写关注IOPS和响应延迟
磁盘顺序写能力很高,接近内存
-
Linux存储系统分层

VFS层:根据文件目录找到对应的文件系统
IO调度层默认使用CFQ公平调度算法
磁盘冗余阵列,管理磁盘的读写
数据冗余机制
RAID自带的一个缓存
如果讲缓存模式设置为write back,那么写入RAID磁盘阵列的数据会先写入到RAID的缓存,后续会慢慢刷新到磁盘
RAID卡锂电池
RAID卡一般都配置的有自己的锂电池,当断电的时候,会讲缓存中数据写入到磁盘
- 但是锂电池有性能衰减问题,所以一般锂电池要配置定时充放电,来延长电池寿命
- 在充放电过程中,RAID的缓存级别会从write back变为write through,数据直接写入到磁盘
- 所以RAID锂电池的自动充放电时候,会导致MYSQL数据库性能下降,每隔一段时间出现抖动
- 解决:关闭自动充放电,写一个脚本,自动在业务低峰期,进行充放电
