このページでは、Spanner で階層ストレージがどのように機能するかについて説明します。この機能は、GoogleSQL 言語データベースと PostgreSQL 言語データベースの両方でサポートされています。
Spanner 階層ストレージは、データをソリッド ステート ドライブ(SSD)とハードディスク ドライブ(HDD)のどちらに保存するかを選択できる、完全マネージド ストレージ機能です。デフォルトでは、階層ストレージを使用していない場合は、データは SSD ストレージに保存されます。データの使用頻度やアクセス頻度に応じて、階層ストレージを使用して、SSD ストレージと HDD ストレージの両方にデータを保存することを検討してください。
- SSD ストレージは、ほとんどのユースケースで最もパフォーマンスが高く(秒間クエリ数が多い)、費用対効果に優れています。書き込みと読み取りのスループットが高く、低レイテンシのデータアクセスを必要とするアクティブ データを保存するために使用する必要があります。
- HDD ストレージは、レイテンシの影響を受けない大規模なデータセットや、アクセス頻度の低いデータセット、ストレージの費用が重要な考慮事項である場合に適しています。
階層ストレージを使用すると、アクティブ データの高パフォーマンスをサポートする SSD ストレージと、低コストでデータアクセス頻度が低い HDD ストレージの両方を活用できます。
SSD ストレージと HDD ストレージのいずれかを選択する
次の表に、SSD ストレージと HDD ストレージの違いと類似点を示します。判断に迷った場合は、SSD ストレージを選択することをおすすめします。
SSD ストレージ | HDD ストレージ | |
---|---|---|
対象のユースケース | 書き込みと読み取りのスループットが高く、低レイテンシのデータアクセスが必要なデータ | レイテンシの影響を受けにくい大規模なデータセット、またはアクセス頻度の低いデータセット |
ノードあたりの予想スループット リージョン構成 |
最大 3,500 QPS の書き込み 最大 22,500 QPS の読み取り |
最大 3,500 QPS の書き込み 最大 1,500 QPS の読み取り |
ノードあたりの予想スループット デュアルリージョン構成とマルチリージョン構成 |
最大 2,700 QPS の書き込み 最大 15,000 QPS の読み取り |
最大 3,500 QPS の書き込み 最大 1,000 QPS の読み取り |
サポートされているオペレーション | 読み取り、書き込み、更新、削除 | 読み取り、書き込み、更新、削除 |
利点
階層型ストレージを使用すると、SSD ストレージと HDD ストレージの両方を使用できるため、次のようなメリットがあります。
- 総所有コストの大幅な削減: HDD ストレージは、レイテンシの影響を受けにくい大規模なデータセットや、アクセス頻度の低いデータセットに低コストのオプションを提供します。
- 管理の容易さ: 追加のパイプラインと分割ロジックの複雑さのないフルマネージド ティアリング サービスを提供します。
- 統合された一貫性のあるエクスペリエンス: ホットデータと(変更可能な)コールドデータにわたる統合されたデータアクセスと単一のメトリックセットを提供します。
- パフォーマンスの向上: データを異なるロカリティ グループに整理することで、クエリのパフォーマンスが向上します。これにより、列間でデータのロカリティと分離が実現されます。同じロカリティ グループ内のデータは物理的に近くに保存されます。
階層型ストレージの仕組み
デフォルトでは、新しいインスタンスを作成すると、データは SSD ストレージにのみ保存されます。同様に、既存のインスタンスのデータも SSD ストレージにのみ保存されます。
階層型ストレージを使用して一部のデータを HDD ストレージに保存する場合は、ローカリティ グループを作成する必要があります。これは、スキーマ内のデータの階層型ストレージ ポリシーの定義に使用されます。ロカリティ グループを作成するときに、ストレージ タイプ(ssd
または hdd
)を定義できます。必要に応じて、HDD ストレージに移動する前に SSD ストレージにデータを保存する時間を定義することもできます。指定された時間が経過すると、Spanner は通常の圧縮サイクル中にデータを HDD ストレージに移行します。通常、このサイクルは指定された時間から 7 日以内に行われます。これは、保存期間ベースの階層型ストレージ ポリシーと呼ばれます。存続期間ベースの階層ストレージ ポリシーを使用する場合、HDD ストレージに移動する前に SSD に保存する必要があるデータの最小時間は 1 時間です。
ロカリティ グループを定義したら、テーブルを作成するときに、データベース、テーブル、列、またはセカンダリ インデックス レベルで階層型ストレージ ポリシーを設定できます。階層型ストレージ ポリシーは、データの保存方法と保存場所を決定します。手順については、ロカリティ グループの作成と管理をご覧ください。
バックアップと復元
Spanner バックアップを使用してデータをバックアップおよび復元できます。バックアップには、各ローカリティ グループのストレージ タイプを指定する INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS
など、すべてのストレージ スキーマ情報が含まれています。ローカリティ グループを含むバックアップを新しいインスタンスに復元するには、移行先のインスタンスが Spanner Enterprise エディションまたは Spanner Enterprise Plus エディションである必要があります。
Data Boost
Spanner Data Boost を使用して、SSD または HDD ストレージ上のデータにアクセスできます。HDD ストレージ上のデータに対してクエリを実行すると、I/O オペレーションが増加するため、コストが増加します。詳細は、料金をご覧ください。
検索インデックス
全文検索とベクトル インデックスは、データベース オブジェクトに設定されているローカリティ グループを継承します。
オブザーバビリティ
階層ストレージには、次のオブザーバビリティ機能があります。
Cloud Monitoring の指標
Spanner には、Cloud Monitoring を使用して階層ストレージの使用状況とデータをモニタリングするために次の指標が用意されています。
spanner.googleapis.com/instance/storage/used_bytes
(合計ストレージ): SSD ストレージと HDD ストレージに保存されているデータの合計バイト数が表示されます。Google Cloud コンソールの Spanner インスタンスとデータベースの [システム分析情報] ページには、この指標の [ストレージ タイプ] のプルダウン メニューがあります。プルダウンを使用して、すべて、HDD のみ、SSD のみのストレージに保存されているデータの合計バイト数を表示します。spanner.googleapis.com/instance/storage/combined/limit_bytes
: SSD と HDD のストレージの合計上限が表示されます。spanner.googleapis.com/instance/storage/combined/limit_bytes_per_processing_unit
: 各処理ユニットの SSD と HDD のストレージの合計上限が表示されます。spanner.googleapis.com/instance/storage/combined/utilization
: SSD と HDD の合計ストレージ使用率と、合計ストレージの上限を比較して表示します。spanner.googleapis.com/instance/disk_load
: HDD の使用率(パーセント)が表示されます。インスタンスのディスク負荷が 100% に達すると、レイテンシが大幅に増加します。
既存の指標を storage_class:ssd
でフィルタする既存のクエリがある場合は、HDD の使用量を表示するためにフィルタを削除する必要があります。
Spanner リソースのモニタリングの詳細については、システム分析情報を使用してインスタンスをモニタリングすると Cloud Monitoring を使用してインスタンスをモニタリングするをご覧ください。
情報スキーマ
INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS
には、Spanner データベース内のローカリティ グループとオプションのリストが含まれています。これには、default
ローカリティ グループの情報が含まれます。詳細については、GoogleSQL 言語データベースの locality_group_options
と PostgreSQL 言語データベースの locality_group_options
をご覧ください。
組み込みの統計テーブル
階層ストレージを使用するデータベースでは、次の組み込み統計情報テーブルを使用できます。
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR
: データベース内の各テーブルの HDD と SSD のストレージ使用量が表示されます。SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
: データベース内の各ロカリティ グループの HDD と SSD のストレージ使用量が表示されます。
詳細については、テーブルサイズの統計情報とクエリ統計情報をご覧ください。
料金
階層ストレージの使用に追加料金はかかりません。インスタンスで使用されるコンピューティング容量とデータベースで使用されるストレージの量に対して、標準の Spanner 料金が請求されます。SSD と HDD に保存されているデータは、それぞれのストレージ料金で課金されます。SSD ストレージと HDD ストレージ間でデータを移動しても料金は発生しません。詳細については、Spanner の料金をご覧ください。
次のステップ
- 詳しくは、ローカリティ グループに関する詳細をご覧ください。
- ローカリティ グループを作成して管理する方法を学習する。
- 詳しくは、タイムスタンプ プリディケートとプッシュダウンによるクエリの最適化をご覧ください。