代码之家  ›  专栏  ›  技术社区  ›  Andrew

Oracle哈希群集溢出块

  •  1
  • Andrew  · 技术社区  · 14 年前

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

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

    当一个溢出块被分配给一个散列值时,这个块是专门分配给那个散列值的,还是作为一个池使用的溢出块,然后不同的散列值可以开始使用同一个溢出块。

    如何监视链的可用空间—在继续插入数据时,是否必须遍历整个链以确定它在当前溢出链中是否有一些可用空间,然后如果它没有找到,则选择分配新块?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Tony Andrews    14 年前

    Concepts Guide (向下滚动至“散列群集存储”:

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

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

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