温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

InnoDB change buffer

发布时间:2020-06-23 14:44:06 来源:网络 阅读:690 作者:louteq 栏目:数据库

InnoDB change buffer 一种重要的数据变更日志

Change buffer的主要目的是将对二级索引的数据操作缓存下来,以此减少二级索引的随机IO,并达到操作合并的效果。


MySQL5.5之前的版本中,由于只支持缓存insert操作,所以最初叫做insert buffer,只是后来的版本中支持了更多的操作类型缓存,才改叫change buffer。


当更新/插入的非聚集索引的数据所对应的页不在内存中时(对非聚集索引的更新操作通常会带来随机IO),会将其放到一个insert buffer中,当随后页面被读到内存中时,会将这些变化的记录merge到页中。当服务器比较空闲时,后台线程也会做merge操作

 

但change buffer会占用buffer pool,并且在非聚集索引很少时,并不总是必要的,反而会降低buffer pool做data cache的能力。




The INFORMATION_SCHEMA.INNODB_BUFFER_PAGE table provides metadata about each page in the buffer pool, including change buffer index and change buffer bitmap pages. Change buffer pages are identified by PAGE_TYPE. IBUF_INDEX is the page type for change buffer index pages, and IBUF_BITMAP is the page type for change buffer bitmap pages. 


For example, you can query the INNODB_BUFFER_PAGE table to determine the approximate number of IBUF_INDEX and IBUF_BITMAP pages as a percentage of total buffer pool pages. 


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;

+---------------------+-------------+-------------------------------+

| change_buffer_pages | total_pages | change_buffer_page_percentage |

+---------------------+-------------+-------------------------------+

|                  25 |        8192 |                        0.3052 |

+---------------------+-------------+-------------------------------+


没有对比,不知道这个结果的性能好坏。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI