博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 缓冲区_mysql 系列 缓冲区
阅读量:6691 次
发布时间:2019-06-25

本文共 696 字,大约阅读时间需要 2 分钟。

2ff34e647e2e3cdfd8dca593e17d9b0a.png

layout: post

title: “MySQL 系列 缓冲区管理”

subtitle: ‘MySQL 技术内幕:InnoDB存储引擎’

author: “lichao”

header-img: “img/post-bg-2015.jpg”

catalog: true

tags:MySQL

缓冲池是一个很大的内存区域,其中存放各种类型的页.

7db72db0f440fbd8ff4ccd757bed4d5d.png

数据库中的缓冲池是通过LRU(最近最少使用)算法来进行管理的。即最频繁使用的页在LRU列表的前端,而最少使用的页在LRU列表的尾端。当缓冲池不能存放新读取到的页时,将首先释放LRU列表中尾端的页。在InnoDB 存储引擎中,缓存池中页的大小默认为16KB

优化的RUL算法

缓冲池采用least recently used(LRU)算法的变体,将缓冲池作为列表进行管理。

fc11dd7ccd302343865e53f4b142fcad.png

在InnoDB的存储引擎中,LRU列表中加入了 midpoint位置,将列表分为两个子列表。新读取的页,虽然是最新访问的页,但并不是直接放入到 LRU列表的首部,而是存在 LRU列表的 midpoint位置。读取到mid位置后的页需要等待 innodb_old_blocks_time 时间后加入到LRU列表的热端。sql 操作时,仅需要缓存这次查询操作中需要的页,

相关参数:

innodb_old_blocks_time // 移动时间.

innodb_old_blocks_pct // 旧链表与新链表的长度.

在LRU列表中的页被修改后,称该页为脏页,这时数据库会通过checkpoint机制将脏页刷新回磁盘,而flush列表中的页即为脏页列表

重做日志缓冲

命令

转载地址:http://gpdoo.baihongyu.com/

你可能感兴趣的文章
Java抓取网页数据(原网页+Javascript返回数据)
查看>>
MYSQL 的 6 个返回时间日期函数
查看>>
银行综合储蓄业务系统,水平为学了一年C语言
查看>>
java中接口的定义与实现
查看>>
不管肉鸡,还是代理,CC识别就封杀!
查看>>
HDFS Java API 常用操作
查看>>
ps 命令
查看>>
Cron表达式中特殊字符解释
查看>>
mongoDB 索引的用法
查看>>
Java序列化与反序列化(实践)
查看>>
利用js_API 运行对html文档元素的属性的CRUD操作
查看>>
Linux 架构
查看>>
数据类型 text 和 varchar 在 add 运算符中不兼容
查看>>
查询任务计划
查看>>
IOS--UISwitch的使用方法
查看>>
Spiral Matrix
查看>>
wikioi 1080 线段树练习 树状数组
查看>>
ArcGIS查找空洞多边形
查看>>
[翻译] JTNumberScrollAnimatedView
查看>>
2015年开局
查看>>