transaction_buffer最大值

问题描述:

可以为memsql cnf中的transaction_buffer设置的最大值是多少?我假设在服务器上分配的RAM有相关性。我的叶子每个都有32G,现在我们将transaction_buffer设置为0.我们在集群上通过了设计阶段,我们想要进行一些性能调整,并且需要设置的一个参数就是这个参数。transaction_buffer最大值

transaction_buffer大小是每个数据库分区保留的内存量 - 即每个叶节点将需要每个叶子的transaction_buffer大小*分区数量的数据库内存。默认值是128 MB,通常这应该足够了。

基本上,这是一个平衡行为 - 在写入磁盘之前,transaction_buffer中的数据将存储在内存中。一个0的transaction_buffer可以为你节省一些内存,但是它没有充分利用内存的速度。如果您有很多不常更新的数据库,则低transaction_buffer可能是正确的平衡,因为它是每个数据库成本(请记住,每个分区本身都是数据库)。

Transaction_buffer对于你来说也可能是有价值的,因为“摆脱无囚牢笼”卡片 - 因为如果你的工作负载变得越来越占用大量内存,那么你的操作系统可能会频繁地杀死MemSQL以减少内存消费。一旦陷入这样的恶性循环,使用减少的事务缓冲区重新启动可以减少内存开销,足以防止系统被OOM杀死足够长的时间以解决问题并纠正您的问题。

最终,它可能会变得适应性变化,而且你将没有那么简单的方法来获得一些摆动空间。这就是为什么确保maximum_memory足够低以至于系统不开始OOM杀死进程的原因。 https://docs.memsql.com/docs/memory-management