1

Oracle の 1 つのテーブル ハッシュ クラスタに多数の行を挿入すると、そのハッシュ値にハッシュされる値でブロックがいっぱいになり、オーバーフロー ブロックの使用が開始されます。

これらのオーバーフロー ブロックは、メイン ブロックからチェーンされたものとしてリストされていますが、それらがどのように割り当てられているか、またはチェーンされているかについての詳細な情報を見つけることができません。

オーバーフロー ブロックがハッシュ値に割り当てられる場合、そのブロックはそのハッシュ値に排他的に割り当てられますか、それともプールとして使用されるオーバーフロー ブロックであり、異なるハッシュ値は同じオーバーフロー ブロックの使用を開始できます。

チェーンの空き領域はどのように監視されていますか? つまり、データが挿入され続けているため、現在のオーバーフロー チェーンに空き領域があるかどうかを確認するためにチェーン全体を走査する必要がありますか? 、次に新しいブロックを割り当てることを選択しますか?

4

1 に答える 1

1

コンセプトガイドから(「ハッシュクラスターストレージ」までスクロールダウン:

ユーザーが部門43のクラスターに行を挿入すると、データベースはこれらの行をブロック100に格納できません。ブロック100はいっぱいです。データベースは、ブロック100を新しいオーバーフローブロック(ブロック200など)にリンクし、挿入された行を新しいブロックに格納します。これで、ブロック100と200の両方が、いずれかの部門のデータを保存する資格があります。図2-7に示すように、部門20または43のクエリでは、データを取得するために2つのI/Oが必要になります。ブロック100とそれに関連するブロック200です。

これは、オーバーフローブロックそのハッシュ値に排他的に割り当てられることを意味します。

しかし、あなたの2番目の質問に対する答えはわかりません。

于 2010-04-26T14:25:03.140 に答える