0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflakeの検索最適化サービスに関するメモ (Architect)

Posted at

これは何?

Snowflakeの検索最適化サービスについてまとめてみたメモ。

おさらい

Snowflakeが提供するクエリパフォーマンスを最適化するための手段

  • クラスタリング
  • Query Acceleration
  • マテリアライズドビュー
  • 検索最適化サービス (Search Optimization Service)

検索最適化サービス

  • 次のようなテーブルに対する特定の種類のクエリのパフォーマンスを大幅に向上させることを目的としている
    • テーブルの選択的なポイント検索クエリ
    • テキストや半構造化データで部分文字列と正規表現の検索
    • 特定のタイプの述語を使用する VARIANT、OBJECT、および ARRAY 列のフィールドに対するクエリ
      • 浮動小数点データ型は未対応
      • 照合順序も未対応
    • GEOGRAPHY 値を持つ選択された地理空間関数を使用するクエリ
      • GEOMETRY は未対応
    • IN 述語を使用するクエリ
    • 検索最適化を適用する前の状態で、数秒以上実行されるクエリ
      • ほとんどの場合、検索最適化では実行時間が1秒未満のクエリのパフォーマンスは大幅に向上しない
  • 必要な権限
    • 検索最適化サービスの追加/変更/削除する場合の権限
      • テーブルに対する OWNERSHIP 権限
      • テーブルを含むスキーマに対する ADD SEARCH OPTIMIZATION 権限
    • 検索最適化サービスを使用してクエリを実行する場合の権限
      • 対象テーブルの SELECT 権限があれば良い
        • SEARCH OPTIMIZATIONはテーブルプロパティであるため、テーブルへの問い合わせ時に自動的に使用される
  • 検索最適化を使用すると、検索アクセスパスと呼ばれる追加の永続ストレージ構造が生成される
  • 検索最適化サービスはサーバーレスで実行される
  • 検索最適化サービスを使用すると、コンピューティングとストレージの両方のコストが発生する
  • 設定するには SEARCH OPTIMIZATION プロパティ を指定する
    • ALTER TABLE … ADD SEARCH OPTIMIZATION のように実行する
    • ON 句では、検索最適化を有効にする列を指定する
    • EQUALITY は ON句で指定できる「検索最適化アクション」の一種
    • ON 句なしで ALTER TABLE … ADD SEARCH OPTIMIZATION コマンドを実行すると、その後テーブルに追加されるすべての列も EQUALITY に設定される
      • サポートされているデータ型のすべての列 (VARIANT と GEOGRAPHY を除く) に対して EQUALITY を指定する場合は、ON 句なしで ALTER TABLE … ADD SEARCH OPTIMIZATION コマンドを使用します
    • ON 句ありで ALTER TABLE … { ADD | DROP } SEARCH OPTIMIZATIONを実行すると、その後テーブルに追加される列はEQUALITYに自動的に設定されない
  • 検索最適化による部分文字列と正規表現クエリの高速化
    • 5文字以上の部分文字列を検索するときにパフォーマンスを向上させることができる
  • データシェアリングを介しても有効になる
    • データコンシューマーは、検索最適化サービスによるパフォーマンス向上のメリットを受けることができる
  • セカンダリデータベースのテーブルの操作(データベース複製のサポート)
    • 検索最適化サービスを有効化していると、その設定有無(プロパティ)は複製される
    • 検索最適化サービスの検索アクセスパスは複製されない
    • 複製した後、セカンダリ側で自動的に検索アクセスパスが生成される
  • テーブル/スキーマ/データベースをクローンすると、検索アクセスパスもクローンされる(ゼロコピークローニングが機能する)
  • CREATE TABLE ... LIKE ... では検索最適化サービスの設定有無は引き継げない
  • 検索最適化は、定数値への暗黙的および明示的なキャストを伴う述語をサポートしているが、実際のテーブル列に値をキャストする述語はサポートしていない
    • INTEGERおよびNUMBERからVARCHARへのキャストを除く
  • 検索最適化は、外部テーブルマテリアライズド ビュー追加できない
  • 述語の結合について
    • AND
      • 述語の結合 (AND) を使用するクエリの場合、述語のいずれかが上記の条件に準拠していれば、検索最適化によってクエリ パフォーマンスを向上させることができる
      • 例 : where condition_x and condition_y
        • いずれかの条件が個別に数行を返す場合 (つまり、condition_x が数行を返すか、condition_y が数行を返す場合)、検索最適化によってパフォーマンスを向上させることができる
        • condition_x が数行を返すが condition_y が多数の行を返す場合、検索最適化によってクエリ パフォーマンスを向上させることができる
    • OR
      • 述語の論理和 (OR) を使用するクエリの場合、すべての述語が上記の条件に準拠していれば、検索最適化によってクエリ パフォーマンスを向上させることができる
      • 例 : where condition_x or condition_y
        • 各条件が個別に数行を返す場合 (つまり、condition_x が数行を返し、condition_y が数行を返す場合)、検索最適化によってパフォーマンスを向上させることができる
        • condition_x が数行を返すが、condition_y が多くの行を返す場合、クエリ パフォーマンスは検索最適化によるメリットを得られない
        • 論理和の場合、各述語は単独ではクエリ内で決定的ではない
    • 検索最適化によってパフォーマンスを向上できるかどうかを判断する前に、他の述語を評価する必要がある
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?