代码之家  ›  专栏  ›  技术社区  ›  RC.

建议在Oracle表空间中使用统一的数据块大小吗?

  •  4
  • RC.  · 技术社区  · 17 年前

    根据我所读到的,似乎今天使用10/11g,Oracle可以自动为您管理这些数据块大小,并且可能不会保持数据块大小不变。我可以很容易地看到这如何更有效地利用磁盘空间,但它们的缺点是什么。我想也许是时候在这件事上放下过去了。(假设我过去的教学一开始是正确的)

    2 回复  |  直到 17 年前
        1
  •  8
  •   dpbradley    17 年前

    是的,除了非常罕见的情况外,是时候放下过去,使用新的Oracle数据块管理功能了。使用本地管理的表空间(LMT)和自动扩展大小,您不必再考虑这些事情。

    作为一名DBA,可变的数据块大小起初让我很担心,因为在7.3天的时间里,我花了很多时间重新组织表空间,以消除因数据块分配非零百分比增加而导致的碎片。(您需要非零百分比的增加,因为根据创建数据库时使用的数据库块大小,您的最大数据块数量被限制在不同的级别)但是,Oracle使用一种算法来确定数据块大小增加的速率和幅度,从而有效地消除了碎片。

    此外,忘记你听说过的关于最佳配置是如何将表或索引放入单个数据块中,或者你可以通过数据块配置以某种方式管理i/o的任何事情——这从来都不是真的。在字典管理表空间的时代,在字典表中管理数千个区段可能会受到一些惩罚,但LMT使用位图,这不是问题。Oracle缓冲区块,而不是段扩展。

        2
  •  3
  •   Quassnoi    17 年前

    如果你有无限的磁盘空间和即时访问时间,你根本不必关心扩展数据块。

    你只要把每张桌子都做好 INITIAL 100T NEXT 100T MAXEXTENTS UNLIMITED PCTINCREASE 0 300 年。

    当您的磁盘空间不是无限的时,就会出现问题 访问时间各不相同。

    区段旨在应对数据稀疏:当您的数据碎片化时,您将拥有 HDD 从一个地方跳到另一个地方需要时间。

    理想的情况是将每个表的所有数据都驻留在一个区段中,同时将最常连接的表的数据驻留在下一个区段,这样就可以按顺序读取所有内容。

    请注意,访问时间还包括找出数据所在位置所需的访问时间。如果您的数据非常稀疏,则需要额外查找范围字典。

    如今,磁盘空间并不重要,而访问时间仍然很重要。

    这就是为什么 Oracle 创建了范围管理。

    这在使用的空间方面不如手工制作的扩展布局有效,但在访问时间方面更有效。

    因此,如果您有足够的磁盘空间(即您的数据库将占用不到一半的磁盘空间 5 年份),然后只需使用自动范围。