首页 > 数据库 >mysql-缓冲池

mysql-缓冲池

时间:2022-09-30 22:11:10浏览次数:43  
标签:缓存 缓冲 内存 mysql 磁盘 操作 数据

为什么要有缓冲池?

InnoDB存储引擎是以数据页为单位来管理存储空间的,当我们对MySQL数据库进行增删改查等操作时,其本质都是在访问操作数据页,如读页,写页,新建页等。

因此DBMS会把需要的页数据加载到内存中,然后才可以操作数据页。

在数据库系统中,CPU 速度与磁盘速度之间的差距是非常大的,为了最大可能的弥补之间的差距,提出了缓存池的概念。

所以缓存池,简单来说就是一块「内存区域」,通过内存的速度来弥补磁盘速度较慢,导致对数据库造成性能的影响。

缓存池的基本原理

「读操作」:

在数据库中进行读取页的操作,首先把从磁盘读到的页存放在缓存池中,下一次读取相同的页时,首先判断该页是不是在缓存池中。

若在,称该页在缓存池中被命中,则直接读取该页,否则,还是去读取磁盘上的页。

「写操作」:

对于数据库中页的修改操作,首先修改在缓存池中的页,然后在以一定的频率刷新到磁盘,并不是每次页发生改变就刷新回磁盘,而是通过 checkpoint 的机制把页刷新回磁盘。

可以看到,无论是读操作还是写操纵,都是对缓存池进行操作,而不是直接对磁盘进行操纵。

缓存原则:

缓冲池是将数据缓存到内存中,内存是有大小限制的,MySQL缓冲池具体的大小支持设置,我们不可以把所有数据都缓存到内存中,因此缓存数据是有优先级的

MySQL缓冲池缓存机制是遵循LRU淘汰机制(即最近最少使用被淘汰),MySQL在LRU基础上做了冷热数据的分离,使得缓存更加高效。

预加载:

DBMS会把需要数的数据页前后的数据页一起加载到缓冲池,当我们需要查前后数据数据时会更加高效.

为了防止缓存了没有使用到的数据页,,数据第一次被加载会放入冷数据区,如果在设定时间中没有被使用,数据是不会放热数据区,在冷数据区会遵循LRU机制被淘汰。

标签:缓存,缓冲,内存,mysql,磁盘,操作,数据
From: https://www.cnblogs.com/ggzs/p/16746389.html

相关文章