このページでは、Spanner で書き込みのスループットを最適化するために、commit(書き込み)の最大遅延時間を構成する方法について説明します。
概要
データの整合性を維持するために、Spanner はデータベース内のすべての投票レプリカに書き込みリクエストを送信します。このレプリケーション プロセスには、計算のオーバーヘッドが発生する可能性があります。詳細については、レプリケーションをご覧ください。
スループットが最適化された書き込みには、一群の書き込みを同時に実行してこうした計算コストを平均化するオプションがあります。このオプションを実行すると、Spanner ではわずかな遅延が発生し、同じ投票参加者に送信する必要がある一群の書き込みがまとめられます。この方法で書き込みを実行すると、レイテンシはわずかに増加しますが、スループットを大幅に向上させることができます。
デフォルトの動作
commit の遅延時間を設定しない場合、Spanner によって書き込みのコストが平均化すると判断されるとわずかな遅延が設定されることがあります。
一般的なユースケース
書き込みリクエストの遅延時間は、アプリケーションのニーズに応じて手動で設定できます。commit の最大遅延時間を 0 ミリ秒に設定して、レイテンシの影響を受けやすいアプリケーションの commit の遅延を無効にすることもできます。
レイテンシの許容度が高いアプリケーションでスループットを最適化する場合、commit の遅延時間を長く設定すると、各書き込みのレイテンシが大きくなる一方でスループットが大幅に向上します。たとえば、大量のデータを一括で読み込む際に Spanner が個々のデータを書き込む速度が、アプリケーションにとって気にするものでない場合は、commit 遅延時間をより長い値(100 ミリ秒など)に設定できます。最初は 100 ミリ秒の値から始めて、レイテンシとスループットのトレードオフでニーズが満たされるまで増減して調整することをおすすめします。ほとんどのアプリケーションでは、20~100 ミリ秒の値が最適です。
レイテンシの影響を受けやすいアプリケーションの場合、Spanner もデフォルトではレイテンシの影響を受けます。ワークロードが急増すると、Spanner によってわずかな遅延が設定されることがあります。値を 0 ミリ秒に設定してテストすると、スループットは低下してもレイテンシの低減がアプリケーションにとって妥当なかどうかを判断できます。
commit 遅延時間が混在した設定を行う
書き込みのサブセットに対してさまざまな最大 commit 遅延時間を構成できます。これを行うと、Spanner は一連の書き込みで構成されている最短の遅延時間を使用します。ただし、ほとんどのユースケースでは、動作が予測しやすくなるため、単一の値を選択することをおすすめします。
制限事項
commit の遅延時間は 0~500 ミリ秒の間で設定できます。commit の遅延を 500 ミリ秒より長く設定するとエラーが発生します。
commit リクエストに最大 commit 遅延を設定する
最大 commit 遅延パラメータは、CommitRequest
メソッドの一部です。このメソッドにアクセスするには、RPC API、REST API、または Cloud Spanner クライアント ライブラリを使用します。
Go
Node.js
Python
Ruby
書き込みリクエストのレイテンシをモニタリングする
Google Cloud コンソールを使用して、Spanner の CPU 使用率とレイテンシをモニタリングできます。書き込みリクエストの遅延時間を長く設定すると、レイテンシが増加するのに対し、CPU 使用率は減少する可能性があります。Spanner リクエストのレイテンシの詳細については、Spanner API リクエストのレイテンシをキャプチャして可視化するをご覧ください。