相关的文档10bet官方网站 下载本手册 本手册摘录

MySQL 8.0参考手册/MySQL 8.0常见问题/ MySQL 8.0常见问题:InnoDB更改缓冲区

A.16 MySQL 8.0 FAQ:InnoDB更改缓冲区

A.16.1。哪些类型的操作会修改二级索引并导致更改缓冲?
A.16.2。InnoDB更改缓冲区的好处是什么?
A.16.3。更改缓冲区是否支持其他类型的索引?
A.16.4。InnoDB使用了多少空间用于更改缓冲区?
A.16.5。如何确定更改缓冲区的当前大小?
A.16.6。更改缓冲区合并时是否发生?
A.16.7。何时刷新更改缓冲区?
A.16.8。应该使用更改缓冲区时?
A.16.9。什么时候不使用更改缓冲区?
A.16.10。在哪里可以在哪里找到有关更改缓冲区的其他信息?

A.16.1。

哪些类型的操作会修改二级索引并导致更改缓冲?

插入更新,删除操作可以修改辅助索引。如果受影响的索引页面不在缓冲池中,则可以在更改缓冲区中缓冲更改。

A.16.2。

什么好处Innodb.更改缓冲区?

缓冲次要索引时更改辅助索引页面不在缓冲池中,避免昂贵的随机接入I / O操作,以便在磁盘中立即读取受影响的索引页面。稍后可以批量应用缓冲更改,因为页面被其他读取操作读入缓冲池。

A.16.3。

更改缓冲区是否支持其他类型的索引?

不可以。更改缓冲区仅支持辅索引。不支持群集索引,全文索引和空间索引。全文索引有自己的缓存机制。

A.16.4。

有多少空间Innodb.用于更改缓冲区?

在引入之前innodb_change_buffer_max_size.MySQL 5.6中的配置选项,系统表空间中的磁盘更改缓冲区的最大大小为1/3Innodb.缓冲池大小。

在MySQL 5.6及以后版本中innodb_change_buffer_max_size.配置选项将更改缓冲区的最大大小定义为总缓冲池大小的百分比。默认,innodb_change_buffer_max_size.设置为25.最大设置为50。

Innodb.如果它不会导致磁盘更改缓冲区超过定义的限制,则不会缓冲操作。

更改缓冲页不需要持久保存在缓冲池中,可能会被LRU操作逐出。

A.16.5。

如何确定更改缓冲区的当前大小?

报告了更改缓冲区的当前大小显示发动机InnoDB状态\ g, 在下面插入缓冲区和自适应哈希索引标题。例如:

--------------------------------插入缓冲区和自适应哈希索引----------------------------------中文:尺寸1,免费列出LEN 0,SEG大小2,0合并

相关数据点包括:

  • 尺寸:更改缓冲区内使用的页数。更改缓冲区大小等于SEG大小 - (1 +免费列表LEN).这1 +值表示“更改缓冲区”页面页面。

  • SEG大小:更改缓冲区的大小,在页面中。

有关监视更改缓冲区状态的信息,请参见第15.5.2节,“变更缓冲区”

A.16.6。

更改缓冲区合并时是否发生?

  • 在将页面读取到缓冲池中时,在页面可用之前,会在读取之前合并缓冲更改。

  • 更改缓冲区合并作为后台任务执行。这Innodb_io_capacity.参数设置由执行的I / O活动的上限Innodb.后台任务,例如合并来自更改缓冲区的数据。

  • 在崩溃恢复期间执行更改缓冲区合并。当索引页被读入缓冲池时,更改将从更改缓冲区(在系统表空间中)应用到二级索引的叶页。

  • 更改缓冲区是完全持久的,可以在系统崩溃时存活下来。重新启动后,更改缓冲区合并操作将作为正常操作的一部分继续进行。

  • 可以强制更改缓冲区的完全合并,作为使用缓慢服务器关闭的一部分--innodb-fast-shutdown = 0

A.16.7。

何时刷新更改缓冲区?

刷新占用缓冲池的其他页面的刷新机制与刷新刷新机制相同。

A.16.8。

应该使用更改缓冲区时?

更改缓冲区是一个旨在将随机I / O减少到次要索引的功能,因为索引变大并且不再适合Innodb.缓冲池。通常,当整个数据集不能装入缓冲池时,当有大量DML活动修改二级索引页时,或者当有大量二级索引由DML活动定期更改时,应该使用更改缓冲区。

A.16.9。

什么时候不使用更改缓冲区?

如果整个数据集合适合其中,您可能会考虑禁用更改缓冲区Innodb.缓冲池,如果您有相对较少的二级索引,或者如果您正在使用固态存储,其中随机读取大约与顺序读取一样快。在进行配置更改之前,建议您使用具有代表性的工作负载运行测试,以确定禁用更改缓冲区是否有任何好处。

A.16.10。

在哪里可以在哪里找到有关更改缓冲区的其他信息?

第15.5.2节,“变更缓冲区”