Percona XtraDB Cluster GCache和Record-Set缓存

简介:

在Percona XtraDB集群中,有一个GCache和Record-Set缓存(也可称为事务写集缓存)的概念。如果您正在运行长事务,那么使用这两个缓存通常会造成混淆,因为它们都会导致创建磁盘级文件。本手册介绍了它们的主要区别。

一、记录集缓存(Record-Set Cache)

当您在任何特定节点上运行长时间运行的事务时,它将尝试为其尝试修改的每一行附加一个密钥(密钥是该行的唯一标识符{db,table,pk.columns})。这些信息被缓存在out-write-set中,然后发送给组进行认证。

密钥被缓存在HeapStore中(有page-size=64K和total-size=4MB)。如果事务数据大小超过此限制,则存储将从堆切换到页(其具有page-size=64MB和total-limit=free-space-on-disk)。

所有这些限制都是不可配置的,但每次事务的内存页大小大于4MB可能会由于内存压力而导致事件停止,因此此限制是合理的。当Galera支持大型事务时,这是另一个限制。

同样长时间运行的事务也会生成binlog数据,这些数据也会附加到commit(HeapStore-> FileStore)上的out-write-set。 这些数据可能很重要,因为它是由事务插入/更新/删除的行的二进制日志映像。 wsrep_max_ws_size变量控制这部分写入集的大小。 该阈值不考虑为缓存键和标题分配的大小。

如果FileStore被使用,它将在磁盘上创建一个文件(名称如xxxx_keys和xxxx_data)以存储缓存数据。这些文件一直保存到提交事务,因此事务的生命周期被链接。

当节点完成事务并即将提交时,它将使用这两个文件(如果数据大小足够长以便使用FileStore)生成最终写入集HEADER,并将其发布为集群认证。

执行事务的本地节点也将充当订阅节点,并将通过群集发布机制接收其自己的写入集。这一次,本地节点将尝试将写入集缓存到其GCache中。GCache配置控制GCache保留多少数据。

二、GCache

GCache保存在群集上发布的写入集以进行复制。在GCache中写入集的生命周期不是事务链接的。

当一个JOINER节点需要一个IST时,它将通过这个GCache进行服务(如果可能的话)。

GCache也将创建文件到磁盘。

在任何给定的时间点,本地节点都有两个写入集副本:一个在GCache中,另一个在记录集缓存中(Record-Set Cache)。

例如,让我们INSERT/UPDATE在一个表格中说出200万行,并使用以下模式。

(int , char (100 ), char (100 ) 与 pk (int , char (100 ))
它将在后台创建写入键/数据文件,类似于以下内容:

-rw ------- 1 XXX XXX 67108864年04月11 12:26 0x00000707_data.000000
-rw ------- 1 XXX XXX 67108864年04月11 12:26 0x00000707_data.000001
-rw ------- 1 XXX XXX 67108864年04月11 12:26 0x00000707_data.000002
-rw ------- 1 XXX XXX 67108864年04月11 12:26 0x00000707_keys.000000

目录
相关文章
|
存储 缓存 算法
Go --- GCache缓存官方例子
Go --- GCache缓存官方例子
|
缓存
GoFrame gcache使用实践 | 缓存控制 淘汰策略
gcache模块默认提供的是一个高速的内存缓存,操作效率非常高效,CPU性能损耗在ns纳秒级别。使用简单易上手,非常适合单机应用使用。
256 0
GoFrame gcache使用实践 | 缓存控制 淘汰策略
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
|
30天前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
67 6
|
1月前
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
154 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
|
7天前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
61 22
|
6天前
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
56 7
|
10天前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
40 10
|
10天前
|
缓存 监控 NoSQL
Redis 缓存穿透的检测方法与分析
【10月更文挑战第23天】通过以上对 Redis 缓存穿透检测方法的深入探讨,我们对如何及时发现和处理这一问题有了更全面的认识。在实际应用中,我们需要综合运用多种检测手段,并结合业务场景和实际情况进行分析,以确保能够准确、及时地检测到缓存穿透现象,并采取有效的措施加以解决。同时,要不断优化和改进检测方法,提高检测的准确性和效率,为系统的稳定运行提供有力保障。
40 5