このページでは、Spanner のカラム型エンジンの概要と、その使用方法について説明します。
オペレーショナル データベースは通常、分析のためにデータを抽出、変換、読み込み(ETL)して OLAP システムに格納します。このシステムは、多くの場合、データ ウェアハウスの一部です。Data Boost を使用すると、Spanner は分析コンピューティングを分離し、トランザクションの安定性を確保します。
カラム型エンジンは、バッチベースのスキャンと比較してスキャンを高速化するために分析システムで使用されるストレージ技術です。Spanner のカラム型エンジンを使用すると、最新のオペレーション データで分析を実行し、パフォーマンスを大幅に向上させることができます。Spanner カラム型エンジンは、スキャン パフォーマンスを最大 200 倍に向上させ、厳密な整合性を維持しながら ETL の必要性を排除します。
Spanner の Ressi 形式では、データブロック内の効率的なスキャンに、パーティション属性クロス(PAX)列単位のレイアウトを使用します。ただし、この形式では、高速な単一行ルックアップのために、行のすべての列が特定のブロック内に配置されます。Ressi とは異なり、Spanner のカラム型エンジンはブロックの実行を単一のカラムに専用化します。このアプローチは、Spanner がクエリで参照されている列のみを読み取る必要があるため、シーケンシャル スキャンでより効率的です。
Spanner は、バックグラウンドで(圧縮の一部として)列形式の表現を構築し、クエリ時に表現を最新の更新と自動的にマージして、強整合性を提供します。カラム型ストレージのメリットがないクエリは、引き続き PAX を使用できます。
カラム型エンジンを使用するメリットがあるワークロードは次のとおりです。
- 運用レポートでは、最新の運用データから最新のビジネス インテリジェンスを抽出します。
- サービス提供型アナリティクスは、インタラクティブなレイテンシでダッシュボードとカスタム ドリルダウンを強化します。
- フェデレーション分析では、Spanner と他のソースのデータを BigQuery でシームレスに結合します。
Spanner インスタンスのバックアップには、列形式は含まれません。
カラム型エンジンを使用するためのベスト プラクティス
このセクションでは、カラム型エンジンを使用する際のベスト プラクティスについて説明します。
大規模なスキャンの最適化
カラム型エンジンは、大量のデータをスキャンするクエリを最適化します。データ スキャンや、LIMIT
句がすぐに満たされるクエリの場合は、行ベースのスキャンの方が効率的になることがあります。
必須の列
SELECT *
を使用すると、Spanner は列ストレージからすべての列を読み取ります。パフォーマンスを最大化するには、必要な列のみを指定します。例: SELECT column1, column2 FROM ...
パフォーマンスのボトルネックの特定
カラム型エンジンは、スキャン バウンド ワークロードに効果的です。スキャン バウンド ワークロードを特定するには、テーブル スキャン ノードでレイテンシ レベルが高いクエリプランを確認します。クエリがスキャン バウンドでない場合は、他の最適化を優先します。最適化によってクエリがスキャンバウンドになると、カラム型エンジンは後でメリットを提供できます。
最適なカラム カバレッジ
すでにデータが含まれているデータベースでカラム型エンジンを有効にすると、Spanner の自動圧縮プロセスにより、データがバックグラウンドで非同期的にカラム型ストレージに変換されます。クエリのメリットを確認するには、クエリプランのカラム型読み取り共有の割合を確認します。
離脱率の高いデータの管理
更新やランダム挿入による書き込み率が高いと、カラム型エンジンのパフォーマンスに影響する可能性があります。追加専用ワークロードでは、列形式エンジンを使用しても影響は最小限に抑えられます。圧縮はバックグラウンド プロセスであり、通常は数日間にわたって行われますが、データベースのサイズが大幅に増加した場合は、より早く行われることがあります。または、分割レベルで追加専用の書き込みを優先するようにスキーマを設計します。詳細については、Spanner 内のタイムスタンプ順データのシャーディングをご覧ください。
料金
Spanner カラム型エンジンの課金は、ストレージ使用量に基づいて行われます。Spanner カラム型エンジンを有効にして、Spanner がデータ圧縮を完了すると、新しいカラム型表現を含むようにストレージ使用量が増加します。カラム型エンジンは、ストレージへの影響をモニタリングできるストレージ指標を提供します。詳細については、列形式のデータ ストレージ指標をご覧ください。
Spanner カラム型エンジンは、セルあたりの 8 バイトのオーバーヘッドの影響を受けません。
プレビュー版の制限
- Spanner に直接クエリを実行する場合、または BigQuery
EXTERNAL_QUERY
を使用してクエリを実行する場合は、明示的なヒントを使用して列形式の読み取りを有効にする必要があります。詳細については、列データにクエリを実行するをご覧ください。 - カラム型エンジンは GoogleSQL インターフェースのみをサポートします。
- 選択的フィルタがないスキャンでは、改善効果が小さくなる可能性があります。
次のステップ
- カラム型エンジンを有効にする方法を確認する。
- 列データのクエリを実行する方法を確認する。
- カラム型エンジンをモニタリングする方法を確認する。