餐饮网站建设的毕设报告,网站开发必学书籍,怎么做饲料电商网站,上海市住房和城乡建设厅官方网站一、buffer pool的介绍
Buffer pool是什么
一个内存区域#xff0c;为了提⾼数据库的性能#xff0c;数据库操作数据的时候#xff0c;把硬盘上的数据加载到buffer pool#xff0c;不直接和硬盘打交道#xff0c;操作的是 buffer pool的数据#xff0c;数据库的增删改查… 一、buffer pool的介绍
Buffer pool是什么
一个内存区域为了提⾼数据库的性能数据库操作数据的时候把硬盘上的数据加载到buffer pool不直接和硬盘打交道操作的是 buffer pool的数据数据库的增删改查都是在 buffer pool 上进行
Buffer pool 有多大
Buffer Pool 是在 MySQL 启动的时候向操作系统申请的一片连续的内存空间默认配置下 Buffer Pool 只有 128MB 。
Buffer Pool 缓存什么 二、Buffer pool如何管理
其中「有三大双向链表」:
▪「free 链表」
• ⽤于帮助我们找到空闲的缓存⻚
▪ 「flush 链表」
• ⽤于找到脏缓存⻚也就是需要刷盘的缓存⻚
▪ 「lru 链表」
• ⽤来淘汰不常被访问的缓存⻚分为热数据区和冷数据区冷数据区主要存放那些不常被用到的数据 简单的 LRU 算法并没有被 MySQL 使用因为简单的 LRU 算法无法避免下面这两个问题
预读失效Buffer Pool 污染
预读失效是什么
MySQL 在加载数据页时会提前把它相邻的数据页一并加载进来目的是为了减少磁盘 IO。
但是可能这些被提前加载进来的数据页并没有被访问相当于这个预读是白做了这个就是预读失效。
预读失效解决方案
改进了 LRU 算法将 LRU 划分了 2 个区域old 区域 和 young 区域63:37。划分这两个区域后预读的页就只需要加入到 old 区域的头部当页被真正访问的时候才将页插入 young 区域的头部。如果预读的页一直没有被访问就会从 old 区域移除这样就不会影响 young 区域中的热点数据。
什么是 Buffer Pool 污染
当某一个 SQL 语句扫描了大量的数据时在 Buffer Pool 空间比较有限的情况下可能会将 Buffer Pool 里的所有页都替换出去导致大量热数据被淘汰了等这些热数据又被再次访问的时候由于缓存未命中就会产生大量的磁盘 IOMySQL 性能就会急剧下降这个过程被称为 Buffer Pool 污染
缓存污染解决方案
只有同时满足「被访问」与「在 old 区域停留时间超过 1 秒」innodb_old_blocks_time 阈值默认为1秒两个条件才会被插入到 young 区域头部这样就解决了 Buffer Pool 污染的问题 。