买了个域名 如何建网站,数据型网站,百度访问量统计,wordpress 浮框Buffer Pool 概念free链表flush链表LRU链表chunk 概念
MySQL在启动时向操作系统申请的一片连续的内存#xff0c;默认128M。然后将这块内存分为一个一个缓冲页(16KB#xff0c;因为页就是16KB的)。再为每个缓冲页创建对应的控制块用于管理。比如第一次查询数据之后#xff… Buffer Pool 概念free链表flush链表LRU链表chunk 概念
MySQL在启动时向操作系统申请的一片连续的内存默认128M。然后将这块内存分为一个一个缓冲页(16KB因为页就是16KB的)。再为每个缓冲页创建对应的控制块用于管理。比如第一次查询数据之后数据库中对应的数据页就加载到缓冲页第二次查询就不用去数据库了直接内存查到返回。
free链表
由空闲的缓冲页的控制块组成的链表新增的时候就在这里面找空闲的内存
flush链表
由修改过的缓冲页脏页的控制块组成的链表。 问那什么时候将脏页数据同步到数据库呢 答1、后台线程根据系统的繁忙程度定时从flush链表刷新一部分到磁盘 2、当加载数据到缓冲池发现没有空闲缓冲页时先看LRU链表尾部是否有非脏页控制块用户读取 的有可能是未刷新到磁盘上的脏页也没有的话会强制刷新LRU链表最后一个对应的缓冲页 3、后台线程定时扫LRU链表尾部的一些缓冲页控制块发现脏页就刷新磁盘
LRU链表
用户查询过的缓冲页的控制块组成的链表最新访问的在最前面。所以分为热区和冷区(37%) 问但是预读与全表扫描会破坏这种设计怎么做呢 答其实二者的整个过程分 加载和读两个过程二者都会加载加载的时候都是加载到冷区的头部。而预读不一定会读但全表扫一定会读所以提供了判断全表扫的规则即当前后访问一个页的时间间隔1000ms(默认)数据就不会去加载到热区
chunk
chunk和buffer pool都允许有多个用完一个chunk再用下一个