【问题标题】:What happens when table size is bigger than data block size?当表大小大于数据块大小时会发生什么?
【发布时间】:2016-01-26 08:05:02
【问题描述】:

我了解Oracle将数据块组织成extent,创建表的时候要定义initial和next extent,这样当table size大于extent的大小时,就会得到一个新的extent。

但是当表大小超过数据块大小时会发生什么?

我假设整个范围是确保表大小永远不会超过数据块大小,我的假设是否正确?

请通俗地解释一下。

【问题讨论】:

  • 我不了解 Oracle,但 SQL Server 的数据管理可能会让您了解当行长度超过某些字节时数据库可能会做什么:technet.microsoft.com/en-us/library/ms186981(v=sql.105).aspx
  • 您的意思可能是表空间不阻塞。扩展取自表空间。当表空间填满时,它会检查它是否可以自动增长,如果是,它会检查是否有可以增长的数据文件。否则你会得到一个 ORA-30036(我认为)错误。还有其他限制(配额)也可以限制它。
  • 问题出现在我们的一张幻灯片中,我想我误解了问题,这里是问题的复制和粘贴:当数据(表)大小>数据块大小时会发生什么?

标签: oracle database-design rdbms extent


【解决方案1】:

块是最小的逻辑分配单元,远小于extent或segments,大小在2到32 kB之间变化,8 kB是默认大小。一个范围由块组成,一个段由范围组成。没有基于 LOB 的列的简单堆非分区表在逻辑上由单个段表示。

以下是简要概述:

https://docs.oracle.com/database/121/CNCPT/logical.htm

顺便说一句。一个表总是大于一个块(如果它有数据)它有标题和范围分配块,通常总共是 3 个块,然后表数据在后面的块中。

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2022-01-21
    • 2017-08-28
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2021-05-13
    • 2014-02-12
    • 2020-05-12
    相关资源
    最近更新 更多