oracle表中的可用空间是什么

时间:2013-12-21 17:23:15

标签: sql oracle

我刚读了一些sql教程,我在LINK的Oracle表中发现了一些称为“freespaces”的东西。它们对自由空间意味着什么?我知道如果我们使用varchar(10)而不是varchar2(10),则varchar中将不必要地使用未使用的空间。但是当谈到TRUNCATE时,它们对于自由空间意味着什么呢?

SQL TRUNCATE命令用于删除表中的所有行,释放包含该表的空格。

2 个答案:

答案 0 :(得分:2)

表中的可用空间不在行级别。它位于页面级别。

truncate table命令基本上删除了分配给表的所有页面。这会清空表并将页面释放回页面管理系统。

如果您只是删除行,某些页面可能仍然与该表关联。页面包含记录。表可能能够在现有页面上存储其他记录。那将是表中未使用的空间。

答案 1 :(得分:2)

当您从Oracle数据库中删除表时,空间仍然被占用,因为有可能“取消删除”,因此数据实际上只被标记为已删除但未从磁盘中删除。截断表时,所有数据都被删除,因此它们占用的磁盘空间是免费的。还有可能清除掉落的桌子和释放空间。 有关详细信息,请参阅:http://docs.oracle.com/cd/B19306_01/backup.102/b14192/flashptr004.htm