バッチの使用と誤使用

バッチを使用する場合と使用しない場合。

バッチは、パフォーマンスを最適化する場合に誤って使用されることがよくあります。パフォーマンスの向上がバッチを使用する理由ではありません。バッチは、コーディネーターまたはログに記録されたバッチとログに記録されないバッチの両方に負荷をかけます。

バッチは、挿入または更新されたデータと少数のテーブルを同期する必要があるときに最もよく使用されます。バッチ処理に関係するパーティションの数によってはマルチノード・アクセスの可能性があるため、処理の完了には時間がかかります。バッチ文は記録されるため、パフォーマンス・レイテンシーが増えます。ログに記録されたバッチの場合、コーディネーターはバッチ・ログを他の2つのノードに送信して、障害が発生した場合でもバッチがそれらのノードから再試行できるようにします。

ログに記録されていないバッチの場合、コーディネーターはすべての挿入/更新処理を管理するため、1つのノードで行う作業が増えます。処理用のパーティション・キーが複数のノードに格納されている場合、余分なネットワーク・ホップが発生します。
注: ログに記録されていないバッチはCassandra2.2+で廃止予定です。

バッチ処理された文は、クライアントとサーバー間、また場合によってはサーバー・コーディネーターとレプリカ間のネットワーク往復を保存します。ただし、バッチ処理を実行する前に慎重に検討し、本当に必要かどうかを判断してください。データを読み込む最も速い方法については、「Cassandra: Batch loading without the Batch keyword」(英語)を参照してください。