MySQL —— 缓冲池 Buffer Pool
本文主要内容源自官网: https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool.html 感兴趣的可以直接阅读 缓冲池是主内存的一块区域,在 InnoDB 访问表和索引数据时会在其中进行高速缓存(可以联系 CPU 的高速缓存)。在专用服务器上,通常会把 80% 的内存分配给缓冲池。 缓冲池被分为多个页面,这些页面可能包含多个行。缓冲池使用列表数据结构。使用 LRU (Least Recently Used,最近最少使用)算法的变体将数据从缓存中老化。 缓冲池 LRU 算法 缓冲池 LRU 算法将缓冲池作为列表进行管理。当缓冲池空间不足,但有新页面需要添加到缓冲池时,将驱逐最近最少使用的页面,并将新页面添加到列表的 Midpoint(中点)。总列表分为两个子列表(Sublist): 1. 最前面的是最近访问过的新页面(或者叫 young 页面,年轻页面)子列表 2. 末尾是最近访问的旧页面的子列表 该算法将经常需要访问的页面保留在 New Sublist。Old Sublist 包含不常用的页面,这些页面是驱逐的候选对象。 通常情况,该算法遵循以下规则: 1. 的 Buffer Pool 用于 Old Sublist 2. 列表的 Midpoint 是 New Sublist 的 Tail 和 Old Sublist 的