オラクルインデックス反転とは何ですか

WBOY
リリース: 2022-06-13 16:28:00
オリジナル
2250 人が閲覧しました

Oracle では、インデックス フリッピングとは、異なる子ノード ブロックを分散して格納するという目的を達成するために、インデックスを作成するときにインデックス列のインデックス キー値のバイト反転を指します。これは「B ツリー」です。 「インデックスの分岐。逆インデックスを使用すると、インデックス列のキー値を反転できるため、連続するキー値が異なるリーフ ブロックに分散され、インデックス ブロックの競合が軽減されます。」

オラクルインデックス反転とは何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 12c、Dell G3 コンピューター。

Oracle インデックス反転とは

B ツリー インデックスのブランチである逆インデックスは、主にインデックス作成時にインデックス列のインデックス キー値のバイト反転を実行します。これにより、異なるリーフ

サブノード ブロックに分散ストレージという目的が達成されます。

逆引きインデックスの対象となる問題

従来の B ツリー インデックスを使用すると、インデックス列が順番に生成されると、対応するインデックス キーの値は基本的に同一のインデックスに分散されます。葉っぱのブロック。ユーザーがこの列を操作すると、必然的にインデックス ブロックの競合が発生します。

転置インデックスを使用してインデックス列のキー値を反転し、連続したキー値を異なるリーフ ブロックに分散することで、インデックス ブロックの競合を軽減します。

例: キー値 1001、1002、1003 は反転後、1001、2001、3001 となり、未使用のリーフ ノード ブロックに分散されます。

順序付けされたデータをロードすると、インデックスは必ず I/O に関連するボトルネックに遭遇します。データのロード中に、インデックスとディスクの一部の部分が他の部分よりもはるかに頻繁に使用されることになります。この問題を解決するには、ファイルを物理的に複数のディスクに分割できるディスク アーキテクチャにインデックス テーブル スペースを保存します。

この問題を解決するために、Oracle はキー インデックスを逆にする方法も提供しています。逆キーインデックスを使用してデータが保存されている場合、データの値は元に保存されている値の逆になります。このようにして、データ 1234、1235、および 1236 は、4321、5321、および 6321 として格納されます。その結果、インデックスは新しく挿入された行ごとに異なるインデックス ブロックを更新します。

リバーサルキー処理は、ビットマップ索引および索引構成表では実行できません。

ヒント:

ディスク容量が限られており、大量の順序付けされたロードを実行する場合は、逆キー インデックスを使用できます。

逆キー索引は、ビットマップ索引または索引構成表では使用できません。

ORACLE DBA の実践: 逆引きキーワード インデックスの作成

大規模なオンライン トランザクション処理システムの場合、テーブルは通常非常に大きく、これらのテーブルの主キーはシリアル番号によって生成され、インデックスが付いています。したがって、同じデータ ブロック内に隣接するインデックス レコードが存在する可能性があり、データ ブロックの競合が発生します。時間の経過とともに、古い役に立たないデータは継続的に削除され、新しい有用なデータがこれらのテーブルに挿入されます。明らかに、削除されたデータはシリアル番号の小さい古いデータですが、挿入されたデータには新しく生成されたシリアル番号が付いています。(必須)つまり、インデックス ツリーがシーケンス番号の大きい側に偏り、ツリーの深さが深くなり、システム効率が低下します。

上記の問題を解決するために、Oracle は逆キーワード索引を導入しました。逆キーワード索引付けは、キーワード (シリアル番号) の各バイトの順序を逆にしてから再索引付けすることによって実現されます。例:

オラクルインデックス反転とは何ですか上記からわかるように、元の隣接する順序# は、反転された後は隣接しなくなるため、隣接する順序# を In に分散できます。データ ブロックが異なると、上記の問題は簡単に解決されます。

しかし、物事は常に 2 つに分かれており、逆インデックス キーワードにも問題があります。たとえば、逆キー インデックスを持つテーブルに対して範囲クエリを実行すると、問題が発生します。通常のインデックス作成では、条件を満たすインデックス レコードは同じデータ ブロックまたは隣接するデータ ブロックに配置されるため、非常に高速ですが、逆引きキーワード インデックスを使用した後は、条件を満たす元の隣接するインデックス レコードが複数のデータ ブロックに分散されます。データ ブロックの場合、クエリ操作を完了する唯一の方法は、テーブル全体のスキャンを実行することです。したがって、逆引きキーワードインデックスを使用するかどうかを決定するときは、挿入操作が重要であるか、範囲クエリが重要であるかを区別する必要があります。

推奨チュートリアル: 「

Oracle ビデオ チュートリアル

以上がオラクルインデックス反転とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!