理解GCache和记录集缓存¶
在Pe雷竞技下载官网rcona XtraDB集群中,有GCache和记录集缓存(也可以称为事务写集缓存)的概念。如果您正在运行长事务,这两个缓存的使用通常令人困惑,因为它们都会导致磁盘级文件的创建。这本手册描述了它们的主要区别。
记录集缓存¶
当您在任何特定节点上运行长时间运行的事务时,它将尝试为它试图修改的每一行追加一个键(键是该行的唯一标识符){db、表pk.columns}).此信息缓存在out-write set中,然后将其发送到组进行认证。
键缓存在HeapStore中(它有页面大小= 64 k和总大小= 4 mb).如果事务数据大小超过了这个限制,那么存储将从Heap切换到Page页面大小= 64 mb和总数受限= free-space-on-disk).
所有这些限制都是不可配置的,但是如果每个事务的内存页大小大于4MB,则会由于内存压力而导致事务暂停,因此这个限制是合理的。当Galera支持大型事务时,这是另一个需要解决的限制。
同一个长时间运行的事务还将生成binlog数据,该数据还将在提交时追加到out-write-set (HeapStore - > FileStore).这个数据可能很重要,因为它是由事务插入/更新/删除的行组成的binlog映像。的wsrep_max_ws_size变量控制写集的这一部分的大小。该阈值不考虑为缓存键和头分配的大小。
如果FileStore时,它会在磁盘上创建一个文件(文件名类似于xxxx_keys和xxxx_data)以储存快取数据。这些文件一直保存到事务提交为止,因此事务的生命周期是链接的。
当节点处理完事务并准备提交时,它将使用这两个文件生成最终写集(如果数据大小增长到足以使用的话)FileStore) +头,并将其发布以进行群集认证。
执行事务的本机节点也将充当订阅节点,并将通过集群发布机制接收自己的写集。这一次,本机节点将尝试将写集缓存到其GCache中。GCache保留多少数据由GCache配置控制。
GCache¶
GCache保存发布到集群上用于复制的写集。GCache中write-set的生命周期不是事务链接的。
当一个乔伊纳节点需要一个IST,它将通过这个GCache服务(如果可能的话)。
GCache还将把文件创建到磁盘上。你可以阅读更多相关内容在这里.
在任何给定的时间点,本机节点都有写集的两个副本:一个在GCache中,另一个在Record-Set Cache中。
比如说,你插入/更新一个表中有200万行,使用以下模式。
(int, char(100), char(100)与pk (int, char(100))
它将在后台创建写设置键/数据文件,如下所示:
-rw------- 1 xxx xxx 67108864 Apr 11 12:26 0x00000707_data。000000 -rw------- 1 xxx xxx 67108864 Apr 11 12:26 0x00000707_data。000001 -rw------- 1 xxx xxx 67108864四月11 12:26 0x00000707_data。000002 -rw------- 1 xxx xxx 67108864 Apr 11 12:26 0x00000707_keys.000000