# 18.7.6.2减少缓存大小

XCom消息缓存大小的最小设置为1GB,最高可达MySQL 8.0.20。在MySQL 8.0.21中,最小设置为134217728字节(128MB),这允许在可用内存有限的主机上部署。有一个非常低的组\复制\消息\缓存\大小如果主机位于不稳定的网络上,则不建议使用此设置,因为较小的消息缓存会使组成员在暂时失去连接后更难重新连接。

如果重新连接的成员无法从XCom消息缓存中检索到所需的所有消息,则该成员必须离开该组并重新加入该组,以便使用分布式恢复从另一个成员的二进制日志中检索丢失的事务。在MySQL 8.0.21中,离开组的成员默认会进行三次自动重新加入尝试,因此重新加入组的过程仍然可以在没有操作员干预的情况下进行。但是,与从XCom消息缓存中检索消息相比,使用分布式恢复重新加入是一个更长、更复杂的过程,因此成员需要更长的时间才能可用,并且组的性能可能会受到影响。在一个稳定的网络上,可以最大限度地减少成员暂时失去连接的频率和持续时间,这种情况的发生频率也应该最小化,因此该组可能能够容忍较小的XCom消息缓存大小,而不会对其性能产生重大影响。

如果您正在考虑降低缓存大小限制,可以查询Performance Schema表内存\u摘要\u全局\u按事件\u名称使用以下语句:

SELECT * FROM performance_schema.memory_summary_global_by_event_name
  WHERE EVENT_NAME LIKE 'memory/group_rpl/GCS_XCom::xcom_cache';

这将返回消息缓存的内存使用统计信息,包括缓存条目的当前数量和缓存的当前大小。如果降低缓存大小限制,XCom将删除已确定并交付的最旧条目,直到当前大小低于限制。在删除过程中,XCom可能会暂时超过缓存大小限制。