开发者

Oracle Hash Cluster Overflow Blocks

When inserting a large number of rows into a single table hash cluster in Oracle, it will fill up the block w开发者_如何学Goith any values that hash to that hash-value and then start using overflow blocks.

These overflow blocks are listed as chained off the main block, but I can not find detailed information on the way in which they are allocated or chained.

When an overflow block is allocated for a hash value, is that block exclusively allocated to that hash value, or are the overflow blocks used as a pool and different hash values can then start using the same overflow block.

How is the free space of the chain monitored - in that, as data is continued to be inserted, does it have to traverse the entire chain to find out if it has some free space in the current overflow chain, and then if it finds none, it then chooses to allocate a new block?


From the Concepts Guide (scroll down to "Hash Cluster Storage":

When users insert rows into the cluster for department 43, the database cannot store these rows in block 100, which is full. The database links block 100 to a new overflow block, say block 200, and stores the inserted rows in the new block. Both block 100 and 200 are now eligible to store data for either department. As shown in Figure 2-7, a query of either department 20 or 43 now requires two I/Os to retrieve the data: block 100 and its associated block 200.

This means that the overflow block is exclusively allocated to that hash value.

I don't know the answer to your second question though.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜