1

当在 Oracle 中将大量行插入单个表哈希集群时,它将用哈希到该哈希值的任何值填充块,然后开始使用溢出块。

这些溢出块被列为链接主块,但我找不到有关它们分配或链接方式的详细信息。

当为哈希值分配溢出块时,该块是专门分配给该哈希值的,还是将溢出块用作池,然后不同的哈希值可以开始使用相同的溢出块。

链的空闲空间是如何监控的——也就是说,随着数据的不断插入,它是否必须遍历整个链以找出它在当前溢出链中是否有一些空闲空间,然后如果它没有找到,然后它选择分配一个新块?

4

1 回答 1

1

概念指南(向下滚动到“哈希集群存储”:

当用户将行插入到部门 43 的集群中时,数据库无法将这些行存储在已满的块 100 中。数据库将块100链接到新的溢出块,例如块200,并将插入的行存储在新块中。块 100 和 200 现在都有资格存储任一部门的数据。如图 2-7 所示,对部门 20 或 43 的查询现在需要两个 I/O 来检索数据:块 100 及其关联的块 200。

这意味着溢出块专门分配给该哈希值。

我不知道你的第二个问题的答案。

于 2010-04-26T14:25:03.140 回答