パフォーマンスの概要

このページでは、最適な条件下にある Spanner で実現可能なおおよそのパフォーマンス、パフォーマンスに影響を与える可能性がある要因、Spanner のパフォーマンスをテストして問題があった場合のトラブルシューティングのヒントを示します。

このページの情報は、Google SQL データベースと PostgreSQL データベースの両方に適用されます。

パフォーマンスとストレージの改善

パフォーマンスとストレージの改善は、すべての Spanner リージョンおよびマルチリージョン インスタンス構成に展開されています。これらのパフォーマンスの改善により、リージョンとマルチリージョンの両方のインスタンス構成で、Spanner ノードのスループットが向上し、レイテンシが改善するはずです。一部のインスタンス構成では、向上したスループットとストレージが利用可能です。改善されたこれらのパフォーマンスを利用する場合、追加料金はなく、アプリケーションに変更を加えることや、Spanner インスタンスで手動で構成する必要もありません。

パフォーマンス スループットの向上

次の表は、パフォーマンスが向上したインスタンス構成のおおよそのスループット(1 秒あたりのクエリ数)を示しています。インスタンス内のコンピューティング容量の各ノード(1,000 処理ユニット)は、最大 50% スループットが高くなります。

インスタンス構成タイプ ピーク時の読み取り(リージョンあたりの QPS)   ピーク時の書き込み(QPS の合計)
リージョン 22,500 または 3,500
マルチリージョン 15,000 または 2,700

パフォーマンス スループットの向上は、以下を除くすべての Spanner インスタンス構成で利用できます。

  • リージョン インスタンス構成: us-west4

  • マルチリージョン インスタンス構成: nam10nam-eur-asia1

これらのインスタンス構成のパフォーマンス スループットの詳細については、通常のワークロードでのパフォーマンスをご覧ください。

書き込みガイダンスは構成全体に適用されますが、読み取りガイダンスはリージョンごとに異なります(読み取り / 書き込みリージョンまたは読み取り専用リージョンから読み取りを処理できるため)。読み取りガイダンスでは、1 KB の単一行を読み取ることを前提としています。書き込みガイダンスでは、1KB / 行で 1 行ずつ書き込むことを前提としています。

一般に、インスタンスにコンピューティング容量(ノードまたは処理ユニット)を追加すると、Spanner インスタンスの読み取りスループットと書き込みスループットの両方が比例的にスケーリングされます。たとえば、ノードが 2 つある単一リージョンの Spanner インスタンスで 1 秒あたり最大 45,000 の読み取りを提供できる場合、4 つのノードを持つ単一リージョンの Spanner インスタンスは 1 秒あたり最大 90,000 の読み取りを提供できます。

Spanner のワークロードに求められるパフォーマンスが確認されない場合は、パフォーマンス低下のトラブルシューティングで一般的な原因を確認してください。

保存容量を増量

一部の Spanner リージョンおよびマルチリージョン インスタンスの構成では、インスタンス内の各コンピューティング容量(1,000 処理ユニット)のストレージ容量が 10 TB 増加します。次の表に、ストレージを増やしたインスタンスの構成を示します。

リージョン インスタンス構成

africa-south1asia-east1asia-northeast2asia-south1asia-southeast1australia-southeast1europe-west3europe-west4southamerica-east1us-central2us-east1us-east4us-east7

マルチリージョン インスタンス構成

asia1, nam6, nam7, nam8, nam14

通常のワークロードでのパフォーマンス

使用しているインスタンス構成でパフォーマンス スループットが改善されていない場合、インスタンス内のコンピューティング容量の各ノード(1,000 処理ユニット)では次のおおよそのスループット(1 秒あたりのクエリ数)を達成できます。

インスタンス構成タイプ ピーク時の読み取り(リージョンあたりの QPS)   ピーク時の書き込み(QPS の合計)
Regional 15,000 または 2,300
マルチリージョン (基本構成別の内訳) 10,000 または 1,800

オプションの読み取り専用レプリカを許可するリージョン インスタンス構成では、オプションの読み取り専用レプリカは 1 秒あたり 5,000 回の追加読み取りをサポートします。

マルチリージョン構成でのパフォーマンス

Spanner マルチリージョン インスタンス構成のパフォーマンス特性は、レプリケーション トポロジによって若干異なります。

1,000 処理単位(1 ノード)ごとのコンピューティング容量は、次のピーク パフォーマンス(100% の CPU で)を実現できます。

ベース構成名 ピーク時の読み取りの概算値(リージョンあたりの QPS) ピーク時の書き込みの概算値(QPS の合計)
asia1 15,000 2,700
asia2 15,000 2,700
eur3 15,000 2,700
eur5 15,000 2,700
eur6 15,000
オプションの読み取り専用レプリカごとに 7,500
2,700
nam3 15,000
オプションの読み取り専用レプリカごとに 7,500
2,700
nam6 us-central1us-east1 に 15,000
us-west1us-west2 に 7,500 [1]
2,700
nam7 15,000
オプションの読み取り専用レプリカごとに 7,500
2,700
nam8 15,000 2,700
nam9 15,000 2,700
nam10 10,000 1,800
nam11 15,000
オプションの読み取り専用レプリカごとに 7,500
2,700
nam12 15,000 2,700
nam13 15,000 2,700
nam14 15,000 2,700
nam15 15,000 2,700
nam-eur-asia1 10,000 1,000
nam-eur-asia3 15,000 1,500
  • [1]: us-west1us-west2 は、リージョンごとに 2 つのレプリカではなく 1 つのレプリカが存在するため、QPS パフォーマンスの半分のみ提供します。

書き込みガイダンスは構成全体に適用されますが、読み取りガイダンスはリージョンごとに異なります(読み取りはどこからでも処理できるため)。読み取りと書き込みのガイダンスでは、1 行あたり 1 KB のデータで読み取りと書き込みを行っていることを前提としています。

Spanner に対して通常のワークロードを実行する

容量の計画を行う際は、Spanner インスタンスに対し、必ず独自の一般的なワークロードを実行してください。これにより、アプリケーションに最適なリソース割り当てを把握できます。Google の PerfKit Benchmarker は、YCSB を使用してクラウド サービスのベンチマークを行います。Spanner 用の PerfKitBenchmarker チュートリアルに沿って、独自のワークロード用のテストを作成できます。その際は、生成されるベンチマークが本番環境で次の特性を反映するように、ベンチマーク構成 yaml ファイルのパラメータをチューニングする必要があります。

ベンチマーク番号を再現する

ベンチマーク番号を再現するには、throughput_benchmark フォルダ内の対応する yaml ファイルを使用して、PerfKit Benchmarker を使用した Spanner のベンチマーク チュートリアルに従ってください。

パフォーマンスの改善が行われたインスタンス構成でインスタンスのベンチマークを行う場合は、改善されたインスタンス構成のいずれかでテストが実行されていることを確認してください。

ゾーンとリージョンの障害からの保護

本番環境でワークロードを実行する場合は、ゾーン全体(リージョン インスタンスの場合)またはリージョン全体(マルチリージョン インスタンスの場合)の損失があった場合に、トラフィックの処理を続けられるようコンピューティング容量を十分にプロビジョニングすることが重要です。推奨の最大 CPU 数の詳細については、CPU 使用率が高い場合のアラートをご覧ください。

次のステップ