自動マテリアライズドビュー推奨
このトピックでは、自動マテリアライズドビュー推奨機能を活用して、ビジネスシナリオでクエリを高速化するために使用できるマテリアライズドビューのスキーマを生成する方法について説明します。
概要
CelerData の非同期マテリアライズドビューは、SPJG(select-project-join-group-by)形式に基づく広く採用されている透過的なクエリの書き換えアルゴリズムを使用しています。これにより、計算コストを大幅に削減し、クエリの実行を大幅に高速化できます。しかし、マテリアライズドビューの設計は難しく、ユーザーはクエリの書き換えと高速化に適したマテリアライズドビューを設計するために多くの努力を費やす必要があります。さらに、ビジネスシナリオが変わるたびにマテリアライズドビューを再設計する必要があり、時間と労力の大きなコストが発生します。
これらの問題に対処するために、CelerData は v3.3.2 で自動マテリアライズドビュー推奨機能を導入しました。ビジネスシナリオのクエリステートメントを Tunespace に追加するだけで、これらのクエリを書き換え、高速化できるコスト効率の良いマテリアライズドビューのスキーマを簡単に取得できます。システムはクエリを解析し、その構造とクエリの書き換えに利用可能な SPJG パターンを抽象化し、情報に基づいて適切なマテリアライズドビュースキーマを計算することで、マテリアライズドビューを自動的に推奨します。これらの構造、パターン、およびクエリの他のメタデータは「Tunespace」を形成します。また、レガシーマテリアライズドビューを Tunespace に追加することもできます。システムはマテリアライズドビューを解析し、Tunespace 内のクエリを高速化できる場合、またはいくつかのマテリアライズドビューを1つにマージできる場合にスキーマを推奨します。マテリアライズドビューをマージすることで、マテリアライズドビューの数を減らし、それに伴うリフレッシュとストレージのコストを削減できます。Tunespace にレコードを追加または削除するたびに、システムは推奨を自動的に更新し、レガシーマテリアライズドビューの再設計の手間を解消します。
使用方法
ステップ 1. Tunespace を作成する
構文:
CREATE TUNESPACE [IF NOT EXISTS] <tunespace_name>
tunespace_name
: 作成する Tunespace の名前。
例:
CREATE TUNESPACE test_ts;
注意
Tunespace は本質的に SQL 操作を許可する通常のテーブルです。
ステップ 2. クエリを Tunespace に追加する
クエリが Tunespace に追加されると、システムはクエリステートメントを解析し、Tunespace にクエリの SPJG 構造とメタデータを記録します。オプションで各クエリに名前を割り当てることができ、推奨されるマテリアライズドビューによって高速化できるクエリを表すために使用されます。
構文:
ALTER TUNESPACE <tunespace_name> APPEND ["query_name"] <query_statement>
tunespace_name
: Tunespace の名前。query_name
: (オプション)追加するクエリの名前。クエリ名はダブルクォーテーションで囲む必要があります。query_statement
: 追加するクエリ。
例:
-- クエリを test_ts に追加し、クエリ名を Q1.1 と指定します。
ALTER TUNESPACE test_ts APPEND "Q1.1"
SELECT SUM(lo_revenue) AS revenue
FROM lineorder
JOIN dates ON lo_orderdate = d_datekey
WHERE d_year = 1993
AND lo_discount BETWEEN 1 AND 3
AND lo_quantity < 25;
-- クエリ名を指定せずにクエリを test_ts に追加します。
ALTER TUNESPACE test_ts APPEND
SELECT SUM(lo_revenue) AS revenue
FROM lineorder
JOIN dates ON lo_orderdate = d_datekey
WHERE d_year = 1993
AND lo_discount BETWEEN 1 AND 3
AND lo_quantity < 25;
ステップ 3. レガシーマテリアライズドビューで Tunespace を埋める
レガシーマテリアライズドビューが Tunespace に追加されると、システムはそれを解析し、その構造とメタデータを Tunespace に記録します。レガシーマテリアライズドビューは、Tunespace に記録されたクエリを高速化できる場合に推奨されるか、適格な場合にレガシーマテリアライズドビューをマージするマテリアライズドビューのスキーマを推奨します。マテリアライズドビューがどのようにマージされるかの詳細については、マテリアライズドビューマージを参照してください。
データベースまたは別の Tunespace からレガシーマテリアライズドビューで Tunespace を埋めることができます。
構文:
-- データベース内のレガシーマテリアライズドビューで Tunespace を埋める。
ALTER TUNESPACE <tunespace_name> POPULATE FROM DATABASE <database_name>
-- 別の Tunespace からレガシーマテリアライズドビューで Tunespace を埋める。
ALTER TUNESPACE <tunespace_name> POPULATE FROM TUNESPACE <source_tunespace_name>
tunespace_name
: Tunespace の名前。database_name
: Tunespace を埋めるために使用されるマテリアライズドビューを持つデータベースの名前。source_tunespace_name
: 現在の Tunespace を埋めるために使用されるマテリアライズドビューを持つソース Tunespace の名前。
例:
-- データベース ssb 内のレガシーマテリアライズドビューで Tunespace を埋める。
ALTER TUNESPACE test_ts POPULATE FROM DATABASE ssb;
-- 別の Tunespace src_ts からレガシーマテリアライズドビューで Tunespace を埋める。
ALTER TUNESPACE test_ts POPULATE FROM TUNESPACE src_ts;
ステップ 4. マテリアライズドビューの推奨を表示する
クエリとレガシーマテリアライズドビューが Tunespace に追加されると、システムは推奨 されるマテリアライズドビューのスキーマを自動的に計算します。SHOW RECOMMENDATIONS ステートメントを実行することで、推奨されるマテリアライズドビュースキーマを表示できます。
構文:
SHOW RECOMMENDATIONS FROM <tunespace_name> [LIMIT <INT>] [OFFSET <INT>]