可以在memsql cnf中为transaction_buffer设置的最大值是多少?我假设与服务器上分配的RAM有关联。我的叶子每个都有32G,目前我们将transaction_buffer设置为0.我们在集群上通过设计阶段,我们想做一些性能调整,需要相应设置的一个参数是这个。
答案 0 :(得分:1)
transaction_buffer大小是每个数据库分区保留的内存量 - 即每个叶节点将需要每个叶子的transaction_buffer大小*分区*数据库内存的数量。默认值为128 MB,这通常就足够了。
答案 1 :(得分:0)
基本上,它是一种平衡行为 - 在写入磁盘之前,transaction_buffer中的数据将存在于内存中。 transaction_buffer为0可能会为您节省一些内存,但它没有充分利用内存的速度。如果您有很多不经常更新的数据库,那么低transaction_buffer可能是正确的平衡,因为它是每个数据库的成本(请记住每个分区本身就是一个数据库)。
Transaction_buffer对于您来说也可能是有价值的,并且可以免于进入监狱。 card - 因为如果你的工作负载变得越来越大,那么你可能会遇到操作系统过于频繁地杀死MemSQL以减少内存消耗的情况。一旦陷入这样的恶性循环,使用减少的事务缓冲区重新启动可以减少内存开销,足以使系统不会被OOM杀死足够长的时间来排除故障并纠正问题。
最终,它可能变得具有适应性,并且你将没有那么简单的方法来获得一些摆动空间。这就是为什么必须确保maximum_memory足够低以至于您的系统不会开始OOM终止进程。 https://docs.memsql.com/docs/memory-management