相关文件10bet官方网站 本手册下载 从本手册中摘录

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

MySQL 5.7 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配置选项中,系统表空间中磁盘更改缓冲区的最大大小是InnoDB缓冲池大小。

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

InnoDB如果操作会导致磁盘上的更改缓冲区超过定义的限制,则不会对该操作进行缓冲。

更改缓冲页面不需要持续在缓冲池中,并且可以通过LRU操作驱动。

A.16.5。

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

更改缓冲区的当前大小由显示引擎的innodb状态\ g下,插入缓冲区和自适应哈希索引标题。例如:

------------------------------------- 插入缓冲和自适应哈希索引  ------------------------------------- Ibuf:尺寸1,空闲列表len 0,赛格大小2,0合并

相关数据点包括:

  • 大小:更改缓冲区中使用的页数。更改缓冲区大小等于Seg大小- (1 + free list len)。的1 +值表示更改缓冲区标题页。

  • 赛格大小:更改缓冲区的大小,以页为单位。

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

A.16.6。

何时发生更改缓冲区合并?

  • 当将页读入缓冲池时,在完成读操作后,在页可用之前,将合并已缓冲的更改。

  • 更改缓冲区合并作为后台任务执行。的innodb_io_capacity参数设置执行的I/O活动的上限InnoDB后台任务,例如从更改缓冲区合并数据。

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

  • 更改缓冲区完全耐用,可以在系统崩溃中存活。重新启动后,将缓冲区合并操作恢复为正常操作的一部分。

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

A.16.7。

更换缓冲区何时冲洗?

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

A.16.8。

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

更改缓冲区是一种特性,用于在索引变大、不再适合于索引时,减少二级索引的随机I/OInnoDB缓冲池。通常,当整个数据集不适合缓冲池时,应使用更改缓冲区,当存在修改次要索引页面的大量DML活动时,或者当DML活动定期更改了许多次要索引时。

A.16.9。

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

如果整个数据集适合InnoDB缓冲池,如果您有相对较少的辅助索引,或者您使用的是固态存储,则随机读取的读数大约是顺序读取。在进行配置更改之前,建议您使用代表性工作负载运行测试以确定禁用更改缓冲区是否提供任何益处。

A.16.10。

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

看到第14.5.2节,“变更缓冲区”