論理パーティション・チェンジ・トラッキングおよびマテリアライズド・ビュー
Autonomous Databaseの論理パーティション・チェンジ・トラッキング(LPCT)メタデータ・フレームワークおよび論理パーティション・チェンジ・トラッキングを使用した問合せリライトに関する情報について説明します。
論理パーティション・チェンジ・トラッキングについて
論理パーティション・チェンジ・トラッキングを使用すると、実表に論理パーティションを作成できます。 マテリアライズド・ビュー・ログを使用しないで、またはマテリアライズド・ビューで使用されている表のパーティション化を必要としないで、個々の論理パーティションに対する実表の失効を評価します。
マテリアライズド・ビューの1つ以上の依存実表が更新されると、マテリアライズド・ビューはSTALEになり、デフォルトの強制整合性モードでの問合せリライトには使用できません。
論理パーティション・チェンジ・トラッキング(LPCT)は、マテリアライズド・ビューの実表のユーザー指定の論理パーティション化情報を利用して、リフレッシュとリライトの両方の目的で、失効データのより詳細なパーティション・レベルの追跡を行う機能を提供します。 クラシック・パーティション化変更トラッキング(PCT)は表の物理パーティション化に依存しますが、LPCTは物理的にパーティション化された表には依存しません。LPCTはパーティション表と非パーティション表の両方で使用できます。
論理パーティション・チェンジ・トラッキング・メカニズムでは、他のサブセットがSTALEであるにもかかわらず、マテリアライズド・ビューのFRESHサブセット(パーティション)が使用されます。 マテリアライズド・ビューで事前に計算された結果が頻繁に使用されるため、ユーザー問合せのレスポンス時間が短縮されます。 マテリアライズド・ビューの使いやすさを向上させる以外に、PCTおよびLPCTでは、マテリアライズド・ビュー・ログを必要とせずにマテリアライズド・ビューを増分リフレッシュすることもできます。リフレッシュは、ON DEMANDまたはON COMMITの両方にできます。
パーティショニング・チェンジ・トラッキング(PCT)と同様に、論理パーティション・チェンジ・トラッキング(LPCT)は実表に関連付けられ、定義された論理パーティション境界に従って、実表のデータ変更によって影響を受けるマテリアライズド・ビュー内の行を正確に識別できます。
詳細は、高度なマテリアライズド・ビュー「高度なマテリアライズド・ビュー」を参照してください。
論理パーティションの変更トラッキングの使用
論理パーティション・チェンジ・トラッキング(LPCT)は、指定されたキー列およびメソッドを使用して、表を論理的にパーティション化します。
論理パーティション・チェンジ・トラッキング作成構文は、物理パーティションに似ています。 表の作成の一環として作成する必要のある物理パーティションとは異なり、LPCTは、表の作成およびそのシェイプに関係なく自由に指定できるため、要件に柔軟に対応できます。 LPCT作成はメタデータのみです。
論理パーティションの作成 - BNF
BNF論理パーティションを作成するための構文について説明します。
BNF論理パーティションを作成する構文は次のとおりです:
CREATE LOGICAL PARTITION TRACKING ON table_name
PARTITION BY RANGE (partition_key)
INTERVAL (interval_clause)
(partition_specification);
RANGEおよびINTERVAL論理パーティション化メソッドのみがサポートされています。- 単一の論理パーティション・キー列のみがサポートされています。
- パーティション・キー列のデータ型は、次のとおりです:
NUMBERDATECHARVARCHARVARCHAR2TIMESTAMPTIMESTAMP WITH TIME ZONE
論理パーティション・キー列の選択
論理パーティション・キーは、各論理パーティションの境界を定義するために指定されます。
論理パーティション・キーは物理的ではありません。つまり、キー範囲に属する表の行は、個別の物理パーティションに分離されません。 表は、論理パーティション・キーとは異なるキーで非パーティション化またはパーティション化できます。 論理パーティション・キーは自由に選択でき、パーティション境界は柔軟に選択できます。
論理パーティション・チェンジ・トラッキング(LPCT)キー列を選択するために、クラスタ化された列、つまり、データが列値でソートされ、問合せフィルタ述語で頻繁に参照される列を検討できます。 クラスタ化された列の場合、データ・ロード時に影響を受ける論理パーティションが少なくなります。つまり、STALE論理パーティションをリフレッシュする必要が少なく、リライトに使用できるFRESH論理パーティションが多くなります。 表がすでにパーティション化されている場合は、パーティション・キー列以外の列を使用してLPCTを作成することをお薦めします。 LPCTは、パーティショニング・チェンジ・トラッキング(PCT)と同様の利点を提供し、同じ列でデータ・トラッキングを行う場合、結合された利点は最大化されません。
論理パーティション変更トラッキングを使用したマテリアライズド・ビューの鮮度
論理パーティション・チェンジ・トラッキング(LPCT)失効トラッキング・メカニズムは、データ変更のたびに、指定された論理パーティション・キーおよびパーティション化メソッドに基づいて、変更統計を自動的に内部的に記録および統合します。
隣接する変更データは、「論理」パーティションにグループ化されます。 物理パーティション境界に関連付けられているパーティショニング・チェンジ・トラッキング(PCT)とは異なり、LPCTスキームでは、実表に適用されたDMLによるデータ変更を柔軟に管理およびグループ化できます。
従来のDMLおよびダイレクト・ロードでは、LPCTは、失効の追跡に使用するアルゴリズムと同じアルゴリズムを採用しています。 問合せリライト中、LPCTは、リライト包含の計算にPCTで使用されるアルゴリズムと同じアルゴリズムを採用します。
表がキー範囲を使用して論理的にパーティション化されている場合、マテリアライズド・ビューに論理パーティション・キーが含まれていると、その表で定義されたマテリアライズド・ビューは、失効トラッキング、リフレッシュおよび問合せリライトにLPCTを使用する資格があります。
ノート:
すべてのタイプのマテリアライズド・ビューがLPCTでサポートされます。論理パーティション変更トラッキングを使用したマテリアライズド・ビューでのリライト
Oracleでは、論理パーティション・チェンジ・トラッキング(LPCT)を使用して、実表の一部の論理パーティションに対してマテリアライズド・ビューがSTALEであることを認識していますが、他の部分に対してはFRESHであることを認識しています。
実表の粒度の細かいデータの失効情報があると、LPCTリライトが原因で、関連するマテリアライズド・ビューがより頻繁に使用されます。
Oracleは、マテリアライズド・ビューのFRESHサブセットを透過的に識別し、クエリー・リライトに使用して、QUERY_REWRITE_INTEGRITY = ENFORCED |TRUSTEDのときに実表の複雑な問合せに回答します。
マテリアライズド・ビューの行が、これらの論理パーティションに関して部分的にFRESHである場合、部分的なリライトが行われ、マテリアライズド・ビュー(つまり、FRESH論理パーティション)を使用して、ベース表(つまり、STALE論理パーティション)を部分的に使用している問合せに回答できます。
論理パーティション・チェンジ・トラッキングを使用したマテリアライズド・ビューのリフレッシュ
論理パーティション・チェンジ・トラッキング(LPCT)リフレッシュは、より詳細なデータの失効を使用して実装し、マテリアライズド・ビューのSTALEサブセットを増分リフレッシュできるため、コストのかかる完全リフレッシュやログ・ベースの高速リフレッシュが不要になります。
LPCTリフレッシュが指定されている場合、STALE論理パーティションが識別され、それらの論理パーティションに対してのみターゲット・リフレッシュ操作が実行されます。
論理パーティション・チェンジ・トラッキングを使用してリフレッシュを起動するには、リフレッシュ・メソッドとして‘L’または‘l’ (論理)を指定します。
たとえば: execute DBMS_MVIEW.REFRESH(<materialized_view_name>,’L’);
REFRESH FORCEが指定されている場合は、可能な場合はFASTリフレッシュが選択されて実行され、それ以外の場合はCOMPLETEリフレッシュが実行されます。 マテリアライズド・ビューのFORCEリフレッシュ時に、LPCTリフレッシュはパーティション化変更トラッキング(PCT)リフレッシュと同じ優先度になります。
論理パーティションの変更トラッキング - データ辞書ビュー
論理パーティションに関する情報を見つけるためのデータ・ディクショナリ・ビューについて説明します。
-
ALL_MVIEW_DETAIL_LOGICAL_PARTITION: このビューには、現在のユーザーがアクセスできるLPCTディテール論理パーティションに関して、マテリアライズド・ビューの最新状態情報が表示されます。 詳細については、ALL_MVIEW_DETAIL_PARTITIONを参照してください。 -
DBA_MVIEW_DETAIL_ LOGICAL_PARTITION: LPCTディテール論理パーティションに関して、データベース内のすべてのマテリアライズド・ビューの最新状態情報を表示します。 詳細については、DBA_MVIEW_DETAIL_PARTITIONを参照してください。 -
USER_MVIEW_DETAIL_ LOGICAL_PARTITION: 現在のユーザーが所有するLPCTディテール論理パーティションに関して、すべてのマテリアライズド・ビューの最新状態情報を表示します。 詳細については、USER_MVIEW_DETAIL_PARTITIONを参照してください。