MySQL缓冲池
2021-10-12 16:51:25 0 举报
MySQL缓冲池的内部结构
作者其他创作
大纲/内容
一行数据
描述数据
MySQL
结束节点
数据页缓存哈希表表空间号+数据页号 = 缓存页地址表空间号+数据页号 = 缓存页地址表空间号+数据页号 = 缓存页地址……
Buffer Pool中的描述数据大概相当于缓存页大小的5%左右,每个描述数据大概是800个字节左右。假设你设置的buffer pool大小是128MB,实际上会超出一些,可能130多MB,因为还要存放每个缓存页的描述数据。
描述信息,用来描述这个数据页(缓存页),包含这个数据页所属的表空间、数据页的编号、这个缓存页在Buffer Pool中的地址以及别的东西。
Buffer Pool 默认128MB。如果数据库是16核32GB,可以分配2GB。[server]innodb_buffer_pool_size = 2147483648
包含很多数据页
缓存页
Buffer Pool(128MB)
Buffer Pool中的描述数据块的free_pre和free_next两个指针,串成一个free双向链表。对于free链表,只有一个\"基础节点\"是不属于Buffer Pool的,是40字节大小的一个节点,存放了free链表的头节点地址,尾节点地址,还有free链表里当前有多少个节点。
基础节点count=n
开始节点
磁盘文件
加载数据页到Buffer Pool里去
数据页(16KB)
0 条评论
下一页