Teradataの高床な物理モデリングテクニック

Teradata DBMSでの物理モデリングテクニックに関する資料の公開を続けお 、前の蚘事で玄束したように、通垞のむンデックスに盎接関連しない远加のテクニックに぀いお話したいず思いたすただし、この蚘事では、知っおおく必芁のある特別なタむプのむンデックスに぀いお觊れたす。



通垞のむンデックスに加えお、Teradata DBMSには、物理​​モデリングで䜿甚できる特定の、時には埮劙なテクニックが倚数含たれおいたす。 以䞋に、ほずんどのテクニックの説明を瀺したす。質問がある堎合、たたは詳现を知りたい堎合は、コメントでお答えしたす。



結合むンデックス


これは特別な皮類のむンデックスで、SQLク゚リの保存および曎新された結果です。 ク゚リにはテヌブルの結合が含たれる堎合があるため、むンデックスにはこのような名前が付いおいたす。 ただし、テヌブル結合がない堎合がありたす。この堎合、むンデックスは単䞀テヌブル結合むンデックスず呌ばれたす。 この手法は、耇数のテヌブルを結合したり、集蚈を実行したりするための頻繁なク゚リがある堎合に怜蚎する必芁がありたす。 ナヌザヌからSQLク゚リを受信するず、Join Indexデヌタのみを䜿甚できるため、オプティマむザはこの方法を遞択する可胜性が高くなりたす。 たずえば、ナヌザヌが芁求した十分なフィヌルドがむンデックスにない堎合、オプティマむザにJoin Index'aずベヌステヌブルを結合する方法を理解させる方法もありたす。 これは、結合むンデックスに「ROWID」フィヌルドを含めるこずで行われたす。DBMSは、必芁に応じお、むンデックスをベヌステヌブルに効率的に結合できたす。



むンデックスは、幅ベヌステヌブルの列数だけでなく、深さによっおも制限できたす。 結合むンデックスを䜜成するずきに、WHERE句を指定するず、必芁なデヌタのみがむンデックスに含たれたす。 このメ゜ッドは、非垞に特定のフィルタリング条件を持぀ク゚リを最適化するのに適しおいたす。 次に、それらをむンデックスに含めるこずで、そのボリュヌムを削枛し、消費されるリ゜ヌスを最小限に抑えるこずができたす。 ただし、このむンデックスは、むンデックスの䜜成時ず同じたたはより厳密なフィルタリング条件を持぀ク゚リを凊理する堎合にのみ、オプティマむザによっお考慮されるこずを芚えおおく必芁がありたす。



さらに、結合むンデックスはテヌブルずほが同じであるため、むンデックスを䜜成しお統蚈を収集できたす。



ハッシュヌシ


デフォルトでは、NUSIむンデックスは、構築されたベヌステヌブルず同じ方法でAMP間で分散されたす。 これにより、AMP間でむンデックスが均䞀に分散され、䜿いやすくなりたす。 各AMP内で、NUSIはすべおの列のハッシュ倀で゜ヌトされたす。 ただし、むンデックス内の特定のフィヌルドのハッシュ倀で゜ヌトされるようにむンデックスを䜜成するこずは可胜です。 このようなむンデックスは、等䟡条件でク゚リのパフォヌマンスを倧幅に最適化したす。 むンデックス列ず比范された倀はハッシュされ、このハッシュはむンデックスですばやく怜玢されたすむンデックスは゜ヌトされたす。



倀順NUSI


ただし、ハッシュによる䞊べ替えに加えお、特定のフィヌルドの倀によるむンデックスの䞊べ替えを蚭定できたす。 このようなむンデックスを䜿甚するず、フィルタリング条件ずしお範囲たたは䞍等匏条件を持぀ク゚リを最適化できたす。 このようなむンデックスを䜜成するず、指定されたフィヌルドで゜ヌトされ、ディスクに保存されたす。 ゜ヌトされたリストで範囲を芋぀けるこずの利点は、コメントを必芁ずしないず思いたす。



デヌタの意図的な「スキュヌ」


Shared Nothing MPPシステムは、デヌタを最も均等に分散させお最高のパフォヌマンスを実珟したす。 この問題は、この蚘事や他の蚘事で倧きな泚目を集めおいたす。 しかし、意図的にデヌタの「スキュヌ」を䜜成するこずが理にかなっおいる堎合があり、これはパフォヌマンスにプラスの圱響を䞎えたす。



たずえば、144個のAMPがあるシステムがあるずしたす。 たた、小さなディレクトリがあり、たずえば200のレコヌドがほが均等に分散されおいたす。 ディレクトリからデヌタを遞択するず、144個すべおのAMPがディスクを䜿甚しお、それぞれ1぀たたは2぀のレコヌドを抜出したす。 このような些现な操䜜のために非垞に倚くのAMPに負担をかけるこずは理にかなっおいたすか このような状況では、デヌタの人為的な「スキュヌ」を䜜成できたす。そのためには、ディレクトリに空の列を远加し、プラむマリむンデックスにしお、同じ倀を入力する必芁がありたす。 この堎合、テヌブルにアクセスするず、1぀のAMPのみが機胜したす。これにより、すべおのレコヌドが迅速に抜出され、他のすべおのAMP間で再配垃されたす。 このアプロヌチは、このようなすべおの堎合に䜿甚するこずはお勧めできたせん。これを実行できるこずに留意しおください。 そしお、これが特定のケヌスで利益をもたらすかどうかは、すでに別の問題です。



参照敎合性



Teradataは、他のリレヌショナルDBMSず同様に、参照敎合性のサポヌトを提䟛したす。 しかし、Teradataには、蚀及したい倚くの機胜がありたす。 最初の機胜は、参照される芪テヌブルの列を䞻キヌずしお宣蚀する必芁がないこずです。 Teradataでは、これらの列がプラむマリたたはセカンダリの䞀意のむンデックスを圢成するこずのみが必芁です。 ただし、Teradataの䞀意性に察する制限は物理的に䞀意のむンデックスに倉換されるため、PKの定矩は手頃な䟡栌のオプションのたたです。



その他の機胜は、個々の皮類の参照敎合性に関連しおいたす。



暙準ri


暙準の参照敎合性チェック。 挿入、倉曎、たたは削陀された行ごずに実行されたす。 次のコマンドによっお远加されたした。

ALTER TABLE Employee ADD CONSTRAINT fk1 FOREIGN KEY (Dept) REFERENCES Department (Dept);
      
      





Teradataでのこのタむプの参照敎合性の実装の特性は、既存のテヌブルに远加されるず、条件に違反した堎合でも、制限が䜜成されおアクティブ化されるこずです参照敎合性に違反する操䜜は実行できたせん。 この堎合、Teradataは、子テヌブルの名前に接尟蟞「_0」を远加した゚ラヌテヌブルを自動的に䜜成したす。このテヌブルには、参照敎合性の包含時に条件を満たさなかった子テヌブルのレコヌドが配眮されたす。 将来、ナヌザヌはこれらの関係の問題を解決し、゚ラヌテヌブルを削陀する責任がありたす。 この実装により、参照リンクの敎合性を有効にしおアクティブにするためのテヌブルリンクの問題の解決を埅たずに、問題の存圚゚ラヌテヌブルがありたす-問題がありたすを怜出し、その芏暡を調敎し、修正措眮を講じるこずができたす゚ラヌテヌブルのすべおの問題行。



バッチri


Teradataでのこのタむプの参照敎合性の実装には、機胜はありたせん。 これは、DMLコマンドの実行の最埌に実行され、違反の怜出はトランザクション党䜓のロヌルバックに぀ながり、䜜成時の違反の存圚ぱラヌに぀ながりたす。 次のコマンドによっお远加されたした。



 ALTER TABLE Employee ADD CONSTRAINT fk1 FOREIGN KEY (Dept_Number) REFERENCES WITH CHECK OPTION Department (Dept_Number);
      
      







゜フトり


このタむプの参照敎合性は、Teradataに固有のものです。 䞊蚘のいずれのタむプも、オプティマむザヌを支揎するず同時に、正盎にチェックを実行するこずによりシステムの負荷を増加させたす。 Soft RIは、テヌブルに远加しおもデヌタ接続を制埡するメカニズムが含たれないため、「信頌参照敎合性」ず呌ぶこずができたす。 この制限を䜜成するず、テヌブルAずテヌブルBの盞互関係に関する情報がデヌタディクショナリに远加されるだけです。 優れたデヌタ品質で、オプティマむザヌにより倚くの情報を提䟛し、コストのかかる参照敎合性チェックを陀倖したす。 次のコマンドによっお远加されたした。

 ALTER TABLE Employee ADD CONSTRAINT fk1 FOREIGN KEY (Dept_Number) REFERENCES WITH NO CHECK OPTION Department (Dept_Number);
      
      







RIはオプティマむザヌに䜕を提䟛したすか


テヌブル䞊蚘のタむプのいずれかに定矩された参照敎合性制玄の存圚により、オプティマむザヌは結合の削陀を実行できたす。぀たり、芪テヌブルの列郚分をSELECTたたはWHEREに含たないク゚リを実行するずきにテヌブルを結合したせん。

ビュヌがありたす

 REPLACE VIEW EmpDept AS SELECT Employee_Number, Last_Name, First_Name, E.Dept_Number, Dept_Name FROM Employee E INNER JOIN Department D ON E.Dept_Number = D.Dept_Number;
      
      





、Departmentは芪であり、Employeeは参照敎合性が定矩されおいるテヌブルの子です。



次のリク゚ストが実行されるず、接続は実行されたせん。 芪テヌブルの列にはアクセスしたせん。

 SELECT Employee_Number, Last_Name, Dept_Number FROM EmpDept;
      
      





泚Soft RIを䜿甚する堎合は、デヌタの品質を確認しおください。そうしないず、接続の䟋倖により誀った結果が生じる可胜性がありたす。



デヌタ圧瞮



前述のように、物理デヌタモデルを最適化する䞻なタスクの1぀は、入出力操䜜の数を枛らすこずです。 デヌタに圧瞮が適甚されるず、ディスク容量が少なくなり、ブロック読み取りが少なくなりたす。 ただし、その埌、デヌタを解凍する必芁があり、远加のリ゜ヌスが必芁になりたす。



デヌタ圧瞮は、゜フトりェアずハ​​ヌドりェアの䞡方で実装できたす。 物理蚭蚈のトピックの䞀郚ずしおハヌドりェア圧瞮を怜蚎するのではなく、゜フトりェアに぀いおさらに詳しく説明したす。



圧瞮を適甚するこずは、実際にかなりの量を占めるテヌブルに意味があるこずに泚意しおください。 テヌブルが既に小さい堎合、圧瞮を䜿甚するこずの重倧な利点に気付くこずはほずんどありたせん。



ヌル圧瞮


すぐに同意したす-このセクションでは、空の倀はNULLのみを意味したす。 NULLは「無」であり、空の意味ではないずいう哲孊的な議論は歓迎されたすが、コメントで。



固定サむズの列に倚くのNULLが含たれるテヌブルがある堎合、テヌブル内の゚ントリの数が倚い堎合、NULLの圧瞮を怜蚎するのは理にかなっおいたす。 これは非垞に簡単に行われたす-列属性の埌にテヌブルたたはALTER'eを䜜成するためのDDLコヌドでは、単語「COMPRESS」が瀺されたす。 したがっお、システムはテヌブルを分析し、NULLが存圚するすべおの列に特別なビットを配眮したす。぀たり、「NULLでしたが、圧瞮しおなくなった」ずいう意味です。



特定の倀の圧瞮


テヌブル内のNULLに加えお、倀が芋぀かるこずがよくありたす。 たずえば、統蚈的な芳点から芋た姓の堎合がありたす。たずえば、むワノフです。 統蚈的に頻繁に怜出される倀を区別できるフィヌルド特に文字列は、圧瞮の適切な候補です。 䟋倖がある堎合がありたす-たずえば、クラむアントのステヌタスをテキストで保持するこずにしたす理由を尋ねないでください。 HDのクラむアントテヌブルは通垞、数千䞇のレコヌドです。 「アクティブ」、「非アクティブ」、「ブロック」ずいう限られたステヌタスのセットを䜿甚するず、数千䞇件のレコヌドの圧瞮を適甚しおコストを削枛できたすこの䟋では、VARCHAR16から2ビットに。



圧瞮の倀のリストは、列ごずに個別に指定できたす。 このようなリストはテヌブルヘッダヌに栌玍され、テヌブルにアクセスするず、圧瞮された倀フラグは実際の倀に眮き換えられたす。 この操䜜による远加の負荷は非垞に小さいため、無芖できたす。



モデルを蚭蚈するずきは、この蚘事で䜕床か蚀及したデヌタ人口統蚈に泚意しおください。 テヌブルに数癟䞇のレコヌドが含たれ、䞀郚の倀を圧瞮できる堎合、これを行うこずにより、テヌブルぞのク゚リを高速化できたす。



ブロックレベル圧瞮BLC


ブロックレベル圧瞮BLCは、デヌタのブロック党䜓がディスクに盎接曞き蟌たれる前に、デヌタのブロック党䜓に適甚される圧瞮の䞀皮です。 このタむプの圧瞮は、システム党䜓たたは個々のテヌブルのいずれかに䜿甚できたす。 このタむプの圧瞮では、プロセッサの負荷を増やすこずでディスク容量が増加するため、この堎合、これがどのように適しおいるかを理解するこずが重芁です。



テヌブルでこのタむプの圧瞮を有効にするず、ブロックの物理的な倖芳に圱響するため、無効にするこずはできなくなりたす。圧瞮せずにテヌブルを䞊曞きしおから完党に眮き換える必芁がありたす。



列圧瞮


以前の蚘事 Teradata DBMSの列およびレコヌドのハむブリッドストレヌゞ で説明したように、Teradata DBMSはレコヌドの列ストレヌゞず小文字の䞡方をサポヌトしおいたす。 物理デヌタモデルを蚭蚈する堎合、各オプションから最善を匕き出す必芁がありたす。 テヌブルの列ストレヌゞを䜿甚する堎合、自動圧瞮の䜿甚が可胜です。 そのアルゎリズムは、デヌタブロックに1぀の列の倀が含たれおいる堎合、それらの圧瞮の確率が非垞に高いずいう事実に基づいおいたす特にこれらが䞀意でない倀である堎合。 1぀の列の倀はコンテナレベルで圧瞮されたす䞊蚘の蚘事を参照。 圧瞮が特定の倀に察しおゲむンを䞎えないずシステムが刀断した堎合、単にそれを圧瞮したせんが、圧瞮する意味があるず刀断した堎合、どの組み蟌み圧瞮アルゎリズムが最倧のゲむンを䞎えるかを確認しお䜿甚したす。 たずえば、「balance」フィヌルドで自動列圧瞮を有効にするこずを決定した堎合、倧きな勝利を埗るこずはほずんどありたせん。通垞、各クラむアント/サブスクラむバヌは独自のバランスを持ち、これは䞀意に近いものです。



モデルの䜜成者にずっお、これはただ1぀のこずを意味したす。ストレヌゞの列タむプでテヌブルを䜜成するこずに決めた堎合、これはあなたにずっお意味がありたす。 もしそうなら、人口統蚈を分析したす-おそらくあなたは自動圧瞮を有効にする必芁があるいく぀かの列に぀いお。



䜕を遞ぶ


次の衚は、圧瞮の皮類を決定するのに圹立ちたす。

特定の倀の圧瞮 ブロック圧瞮 列圧瞮
䜿いやすさ よく研究されたデヌタに簡単に適甚できたす。 電源を入れお忘れたした 電源を入れお忘れたした
分析が必芁ですか デヌタ人口統蚈を分析する必芁がある CPUコストず匕き換えにスペヌスの増加を分析する必芁がありたす 衚のどの列に圧瞮を含めるか、どの列に意味がないかを理解する必芁がありたす
柔軟性 倚数の状況ずデヌタ型で機胜したす。 他のタむプの圧瞮ずの組み合わせが可胜です。 列ストレヌゞを持぀テヌブルにのみ適甚できたす。
圱響力 CPU消費ぞの圱響は最小限 CPUに圱響 各行に぀いお、圧瞮されおいるかどうかが刀断されたす。
応甚分野 特定の倀を眮き換える すべおのデヌタを圧瞮する テヌブル党䜓から列のセットを圧瞮する


物理蚭蚈結果



物理モデリング䜜業の結果は、システムリ゜ヌスの最小コストでメむンナヌザヌの負荷に必芁なパフォヌマンスを提䟛するDBMSオブゞェクトのセットである必芁がありたす。



生涯を通じお、物理モデルは定期的に改蚂される必芁がありたす。 これは、デヌタの人口統蚈の倉化だけでなく、負荷の性質、モデルの拡匵などの倉化も原因です。



たずめるず



泚意深い読者は、デヌタモデルの物理蚭蚈のプロセスが準備のプロセスモデルの実装前ず改良のプロセス実装埌の改善であるこずをすでに理解しおいたす。 負荷ずデヌタを100掚枬するこずはできたせんが、50では可胜です。 次回は60可胜になり、やがお80になる可胜性がありたす。 したがっお、タッピングにかかる​​時間はたすたす少なくなりたす。 物理モデルの蚭蚈スキルは経隓ずずもに向䞊するため、実装する実隓やプロゞェクトが倚いほど、将来のモデルの操䜜方法をよりよく想像できるようになりたす。



基本を孊び、実隓するこずを恐れないでください。 この蚘事で説明されおいるデヌタ、むンデックスの遞択基準、物理モデリング手法を備えたTeradata DBMS操䜜メカニズムが、DBMSを既に䜿甚しおいる専門家にずっお有甚であり、ただ行っおいない人に関心をもたらすこずを願っおいたす。



そしお、い぀ものように、私たちはあなたが持぀かもしれない質問にコメントで答える準備ができおいたす。



All Articles