このページでは、最適な条件下にある 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-central1 と us-east1 に 15,000us-west1 と us-west2 に 7,500HDD: us-central1 と us-east1 に 1,000us-west1 と us-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-west1
とus-west2
には、リージョンごとに 2 つのレプリカではなく 1 つのレプリカが存在するため、QPS パフォーマンスの半分のみ提供します。
書き込みガイダンスは構成全体に適用されますが、読み取りガイダンスはリージョンごとに異なります(読み取りはどこからでも処理できるため)。読み取りと書き込みガイダンスでは、行あたり 1 KB のデータで 1 つの行を読み取りおよび書き込みが行われていると想定しています。
Spanner に対して通常のワークロードを実行する
容量の計画を行う際は、Spanner インスタンスに対して必ず独自の一般的なワークロードを実行してください。これにより、アプリケーションに最適なリソース割り当てを把握できます。Google の PerfKit Benchmarker は、YCSB を使用してクラウド サービスのベンチマークを行います。Bigtable 用の PerfKitBenchmarker チュートリアルを参照して、独自のワークロード用のテストを作成できます。その際は、生成されるベンチマークが本番環境で次の特性を反映するように、ベンチマーク構成 yaml
ファイルのパラメータを調整する必要があります。
- データベースの合計サイズ
- スキーマ(例: 行キーのサイズ、列の数、行のデータサイズ)
- データアクセス パターン(行キーの分布)
- 読み取りと書き込みの混在
- クエリの種類と複雑さ
ベンチマーク番号を再現する
ベンチマーク番号を再現するには、throughput_benchmark
フォルダ内の対応する yaml
ファイルを使用して、PerfKit Benchmarker を使用した Spanner のベンチマーク チュートリアルに沿って操作してください。
パフォーマンスの改善が行われたインスタンス構成でインスタンスのベンチマークを行う場合は、改善されたインスタンス構成のいずれかでテストを実施してください。
ゾーンとリージョンの障害からの保護
本番環境でワークロードを実行する場合は、ゾーン全体(リージョン インスタンスの場合)またはリージョン全体(デュアルリージョンおよびマルチリージョン インスタンスの場合)の損失があった場合に、トラフィックの処理を続けられるようコンピューティング容量を十分にプロビジョニングすることが重要です。推奨の最大 CPU 数の詳細については、高 CPU 使用率に関するアラートをご覧ください。
次のステップ
- Spanner スキーマの設計方法を確認する。
- Spanner パフォーマンスのモニタリング方法を確認する。
- Key Visualizer で問題のトラブルシューティングを行う方法を確認する。
- Spanner の料金を確認する。