memsql の各データベースには独自のトランザクション バッファがあり、サイズは のtransaction-buffer
変数で設定されますmemsql.cnf
。シングル ボックスの場合、デフォルト サイズは 128m です。つまり、新しいデータベースごとに、追加で 128 メガバイトの RAM が消費されます。これにより、作成できるデータベースの数に厳しい制限が課せられます。RAM の量です。
分散型 memsql では、アグリゲーターとリーフ ノードの両方がデフォルトでデータベースごとに 64m を使用します。ただし、リーフにはパーティションごとに 1 つのデータベースがあり、通常、各リーフには CPU コアごとに 1 つのパーティションがあります。これは、memsql クラスターで作成された各データベースが、各リーフでデフォルトで CORES * 64m を使用することを意味します。たとえば、8 コア リーフ ノードのデータベースあたり 512m です。
膨大な数のデータベースを作成する場合は、トランザクション バッファーのサイズを小さくする必要があります。そのバッファは書き込みに使用されるため、書き込みワークロードが高度に同時実行されるか、巨大なトランザクションを作成しない限り、デフォルト値を下げても安全です。
あなたのユースケースでは、特定の時点でユーザーのごく一部のみがデータベースに書き込みを行うと予想される場合、それぞれが独自のデータベースを持っている場合、そのトランザクションバッファースペースの多くはアイドル状態になります。すべてのユーザーを 1 つのデータベースに配置すると、トランザクション バッファーを共有できるため、無駄なメモリが削減されます。