インデックス競合/オラクル環境「ハイキー」の問題
-
26-12-2019 - |
質問
私は「索引の競合」について読んで、以下の説明を見つけました:
Oracle B-Tree Indexesは「右利き」であり、Bツリーの右側のリーフには最低のツリーレベルで最高のキーが含まれています。
インデックスリーフノードの競合は、ユーザ生成キー(すなわちシーケンス)に基づいて行が挿入され、シーケンスキーが常に高次キーであるため、低レベルのインデックスツリーノードの各インサートは上位に伝播しなければならない。Bツリーインデックスのハイキーインジケータ
Oracle B-Tree Indexesが右利きの他の欠点がありますか?
、索引競合競合の他の理由/挿入競合の理由は何ですか?
解決 2
私の質問は特にOracle B-Tree Indexesにとって、実際に "索引の競合"が何であるかについてではありませんでした。 私の質問にもっと多くのポイントを追加したいのですが、それ故にそれに答えたいです。
インデックスリーフノードの競合は、ユーザ生成キー(すなわちシーケンス)に基づいて行が挿入され、シーケンスキーが常に高次キーであるため、低レベルのインデックスツリーノードの各インサートは上位に伝播しなければならない。Bツリーインデックスのハイキーインジケータ
この指標の競合問題を緩和するために使用される3つの技術があります:
- リバースキーインデックス キャッシュとノーオーダーオプションを持つ
- シーケンス
- ハッシュパーティション化されたグローバルインデックスを使用する
- インデックスブロックサイズの調整
他のヒント
インデックスの競合、またはホットスポットは、直列に生成されたPKを索引付けするときに発生する可能性があります。この場合、すべての新しいレコードが常にラッチの原因となるインデックスの右側の葉に挿入されます。
この問題を回避するために、Oracleは levered key オプション。リバースキーインデックスのエントリは逆に保存されます(単にPUT-123は321として保存されます)、新しい挿入された挿入された挿入されます。
一般的に言えば、同じリーフブロックに多くのデータを挿入するたびにホットスポットが発生します。
重要な注意 - 逆のキーインデックスを使用するときは、範囲スキャンを使用できないので、オプションの重みを計ります。