A.16 MySQL 8.4 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 使用多少空间来存储更改缓冲区? |
在 MySQL 5.6 之前,磁盘上更改缓冲区的最大大小是 InnoDB 缓冲池大小的 1/3。 在 MySQL 5.6 及更高版本中, InnoDB 不会缓存操作,如果它会使磁盘上更改缓冲区超过定义的限制。 更改缓冲区页面不需要保留在缓冲池中,可以被 LRU 操作 evicted。 |
|
A.16.5. |
如何确定当前更改缓冲区的大小? |
当前更改缓冲区的大小由
相关数据点包括:
有关监控更改缓冲区状态的信息,请参阅 第 17.5.2 节,“更改缓冲区”。 |
|
A.16.6. |
何时发生更改缓冲区合并? |
|
|
A.16.7. |
何时刷新更改缓冲区? |
更新的页面将通过与刷新缓冲池中的其他页面相同的机制刷新。 |
|
A.16.8. |
何时使用更改缓冲区? |
更改缓冲区是一个功能,旨在减少随机 I/O 到辅助索引,因为索引增长得很大,不再适合 InnoDB 缓冲池。一般来说,应该在整个数据集不适合缓冲池、存在大量 DML 活动修改辅助索引页或存在许多经常更改的辅助索引时使用更改缓冲区。 |
|
A.16.9. |
何时不使用更改缓冲区? |
如果整个数据集适合 |
|
A.16.10. |
哪里可以找到关于更改缓冲区的更多信息? |
请参阅 第 17.5.2 节,“更改缓冲区”。 |