change buffer是存放二级索引的没有在bufferr pool的变更页的缓存区,变更的buffer是由insert,update,delete等操作导致的。等页被加载进buffer pool中后会将change buffer中的页合并。
二级索引通常是非唯一的,插入也是很随机的顺序,更新删除也都不是在邻近的位置,所以change buffer就避免了很多的随机io的产生。puge操作会在系统空闲或慢关闭的时候定时将变更页写入到磁盘上去。
change buffer合并在有大量的二级索引页更新或有很多影响行的情况下会花费很长的时间。change buffer会占用innodb buffer pool的部分空间,在磁盘上,change buffer会占用系统表空间,所以在数据库重启后,索引变更仍然被缓存。在change buffer中被缓存的数据可以使用innodb_change_buffering控制,我们也可以调整innodb_change_buffer_max_size配置change buffer的大小。
可以在show engine inndodb status\G中查看change buffer的信息。
在insert buffer and adaptive hash index部分。
使用下面的语句也能监控
SELECT NAME, COMMENT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME LIKE ‘%ibuf%’\G

查看change buffer占用innodb buffer的大小
SELECT
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
WHERE PAGE_TYPE LIKE ‘IBUF%’
) AS change_buffer_pages,
(
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
) AS total_pages,
(
SELECT ((change_buffer_pages/total_pages)*100)
) AS change_buffer_page_percentage;

在新版本的innodb中,change buffer的数据是放在了共享表空间中的。在ibd恢复数据后,可能需要repaire表重建二级索引。

mysql change buffer相关推荐

  1. 阅读笔记 - MySQL Change Buffer

    文章目录 前言 MySQL - Change Buffer 什么是Change Buffer Change Buffer原理 为什么针对非唯一索引页 Change Buffer好处 适合使用场景 相关 ...

  2. MySQL利用磁盘缓存写入_MySQL写入缓冲区在数据库中的作用( Change Buffer )

    原标题:MySQL写入缓冲区在数据库中的作用( Change Buffer ) 介绍另外一种重要的数据变更日志,也就是InnoDB change buffer.Change buffer的主要目的是将 ...

  3. mysql 数据缓冲区,MySQL写入缓冲区在数据库中的作用( Change Buffer )

    原标题:MySQL写入缓冲区在数据库中的作用( Change Buffer ) 介绍另外一种重要的数据变更日志,也就是InnoDB change buffer.Change buffer的主要目的是将 ...

  4. mysql写缓冲_MySQL 数据库的提速器-写缓存(Change Buffer)

    写缓存(Change Buffer) 是一种特殊的数据结构,用于在对数据变更时,如果数据所在的数据页没有在 buffer pool 中的话,在不影响数据一致性的前提下,InnoDB 引擎会将对数据的操 ...

  5. MySQL 数据库的提速器-写缓存(Change Buffer)

    写缓存(Change Buffer) 是一种特殊的数据结构,用于在对数据变更时,如果数据所在的数据页没有在 buffer pool 中的话,在不影响数据一致性的前提下,InnoDB 引擎会将对数据的操 ...

  6. mysql双写缓冲_MYSQL-写缓冲(change buffer)

    (1)MySQL数据存储包含内存与磁盘两个部分: (2)内存缓冲池(buffer pool)以页为单位,缓存最热的数据页(data page)与索引页(index page): (3)InnoDB以变 ...

  7. MySQL十七:Change Buffer

    尺有所短,寸有所长:不忘初心,方得始终. 在之前的文章<InnoDB的存储结构>介绍的InnoDB的存储结构的组成中,我们知道Change Buffer也是用InnoDB内存结构的组成部分 ...

  8. MySQL的change buffer

    MySQL唯一索引和普通索引区别 唯一索引:唯一索引可以确保索引列不包含重复的值.在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的. 查询过程 比如查询id=5的数据 唯一索引:把数 ...

  9. mysql change index_MySQL · 引擎特性 · Innodb change buffer介绍

    前言 在前面几期月报我们介绍了undo log.redo log以及InnoDB如何崩溃恢复来实现数据ACID的相关知识.本期我们介绍另外一种重要的数据变更日志,也就是InnoDB change bu ...

最新文章

  1. NVIDIA CUDA-X AI
  2. WSS 代码执行的权限提升
  3. OpenCV4 C++学习 必备基础语法知识二
  4. linux用数字方式显示文件权限,全面解析Linux数字文件权限
  5. SpringCloud Hystrix初体验
  6. bat脚本+vs2019编译openssl(x86 | x64) - (static | shared) - (debug | release)
  7. python encode gbk_[转]Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
  8. c语言 div ldiv_C ++中带有示例的ldiv()函数
  9. 计算机图形学资源收集04
  10. Linux 常用的IO接口
  11. 利用InfoPath生成XML资源文件
  12. oracle地址已被占用,ORA-12542 TNS 地址已被占用
  13. layui的按钮禁用与启用
  14. codeblocks安装包和主题及中文语言包百度云下载
  15. 将网页内容保存为PDF
  16. 上市公司商誉减值损失数据(2007-2020年)
  17. Javamail 发送163邮件
  18. 完美解决pytorch多线程问题:Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing
  19. cisco 2960 交换机 配置流程
  20. Java获取图片RGB值

热门文章

  1. OF CF 标志位的判定
  2. ownCloud简介
  3. element ui 中 Popover 组件定位不精准的问题
  4. 解决客户端心跳正常,但是平台显示不在线的问题
  5. 浅谈c语言中怎么让程序直接结束(待补充)
  6. 华为乾坤王辉:新一代网络安全融合体系,筑牢企业数字化转型基石丨2023 INSEC WORLD
  7. 深度强化学习系列之(13): 深度强化学习实验中应该使用多少个随机种子?
  8. GetAsyncKeyState函数返回值
  9. c语言作业自动批改代码,C语言助教用于批量改作业的脚本
  10. pycharm 修改运行框架_Flask框架在pycharm上面搭建和运行