パフォーマンスの概要

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

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

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

すべての Spanner リージョン、デュアルリージョン、マルチリージョン インスタンス構成に、パフォーマンスとストレージの改善が反映されています。パフォーマンスが改善されたことによる追加料金は発生せず、アプリケーションを変更したり、Spanner インスタンスを手動で構成したりする必要はありません。パフォーマンスの改善により、すべてのインスタンス構成で Spanner ノードのスループットが向上し、レイテンシが改善されます。

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

すべての Spanner インスタンス構成でパフォーマンスが改善され、スループットが向上しています。次の表に示すのは、Spanner インスタンス構成のおおよそのスループット(秒間クエリ数)です。

インスタンス構成のタイプ ピーク時の読み取り(リージョンあたりの QPS)   ピーク時の書き込み(QPS の合計)   スループット最適化書き込みを使用したピーク時の書き込み(QPS の合計)
リージョン SSD: 22,500
HDD: 1,500
または SSD: 3,500
HDD: 3,500
SSD: 22,500
HDD: 22,500
デュアルリージョンとマルチリージョン SSD: 15,000
HDD: 1,000
または SSD: 2,700
HDD: 2,700
SSD: 15,000
HDD: 15,000

これらのインスタンス構成のパフォーマンスのスループットの詳細については、通常のワークロードでのパフォーマンスをご覧ください。SSD(ソリッド ステート ドライブ)と HDD(ハードディスク ドライブ)を使用してデータを保存する方法については、階層型ストレージの概要をご覧ください。

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

スループットが最適化された書き込みを使用した場合、書き込みパフォーマンスを最大にするには、100 ミリ秒のバッチ遅延を設定します。

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

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

保存容量の増加

すべての Spanner リージョン、デュアルリージョン、マルチリージョン インスタンス構成において、インスタンス内のコンピューティング容量の各ノード(1,000 処理ユニット)でストレージ容量が 10 TiB 増加します。

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

すべての Spanner インスタンス構成でパフォーマンスが改善され、スループットが向上しています。

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

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

ピーク時の読み取り(リージョンあたりの QPS)   ピーク時の書き込み(QPS の合計)   スループット最適化書き込みを使用したピーク時の書き込み(QPS の合計)
SSD: 22,500
HDD: 1,500
または SSD: 3,500
HDD: 3,500
SSD: 22,500
HDD: 22,500

オプションの読み取り専用レプリカを許可するリージョン インスタンス構成の場合、オプションの読み取り専用レプリカは、SSD ストレージで毎秒 7,500 回の追加読み取りと、HDD ストレージで毎秒 500 回の追加読み取りをサポートできます。

デュアルリージョン構成のパフォーマンス

デュアルリージョン インスタンス構成では、1,000 処理単位(1 ノード)ごとのコンピューティング容量で、次のピーク パフォーマンス(100% の CPU で)を実現できます。スループット最適化書き込みを使用して、テーブル内の数値よりも書き込みスループットを向上させます。

ベース構成名 ピーク時の読み取りの概算値(リージョンあたりの QPS) ピーク時の書き込みの概算値(QPS の合計)
dual-region-australia1 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
dual-region-germany1 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
dual-region-india1 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
dual-region-japan1 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700

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

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

Spanner マルチリージョン インスタンス構成のパフォーマンス特性は、レプリケーション トポロジによって若干異なります。スループット最適化書き込みを使用して、テーブル内の数値よりも書き込みスループットを向上させます。

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

ベース構成名 ピーク時の読み取りの概算値(リージョンあたりの QPS) ピーク時の書き込みの概算値(QPS の合計)
asia1 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
asia2 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
eur3 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
eur5 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
eur6 SSD: 15,000、オプションの読み取り専用レプリカごとに 7,500
HDD: 1,000、オプションの読み取り専用レプリカごとに 500
SSD: 2,700
HDD: 2,700
eur7 SSD: 15,000、オプションの読み取り専用レプリカごとに 7,500
HDD: 1,000、オプションの読み取り専用レプリカごとに 500
SSD: 2,700
HDD: 2,700
nam3 SSD: 15,000、オプションの読み取り専用レプリカごとに 7,500
HDD: 1,000、オプションの読み取り専用レプリカごとに 500
SSD: 2,700
HDD: 2,700
nam6 SSD: us-central1us-east1 に 15,000
us-west1us-west2 に 7,500
HDD: us-central1us-east1 に 1,000
us-west1us-west2 に 500 [1]
SSD: 2,700

HDD: 2,700
nam7 SSD: 15,000、オプションの読み取り専用レプリカごとに 7,500
HDD: 1,000、オプションの読み取り専用レプリカごとに 500
SSD: 2,700
HDD: 2,700
nam8 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam9 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam10 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam11 SSD: 15,000、オプションの読み取り専用レプリカごとに 7,500
HDD: 1,000、オプションの読み取り専用レプリカごとに 500
SSD: 2,700
HDD: 2,700
nam12 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam13 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam14 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam15 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam16 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam-eur-asia1 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
nam-eur-asia3 SSD: 15,000
HDD: 1,000
SSD: 2,700
HDD: 2,700
  • [1]: us-west1us-west2 には、リージョンごとに 2 つのレプリカではなく 1 つのレプリカが存在するため、QPS パフォーマンスの半分のみ提供します。

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

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

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

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

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

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

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

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

次のステップ