Ada*_*ium 5 oracle delete insert size table
我创建一个表并用数据填充它:
create table tab
as
select 'value' || level val
from dual
connect by level <= 10000;
Run Code Online (Sandbox Code Playgroud)
如果我然后删除所有行并插入相同的数据:
delete from tab;
insert into tab
select 'value' || level val
from dual
connect by level <= 10000;
commit;
Run Code Online (Sandbox Code Playgroud)
每次执行删除然后插入时表大小都会增加。多次执行这些操作会导致表增长到原始大小的许多倍。
我希望大小保持(大约)相同。为什么会这样?
删除将空间标记为空闲,它实际上并没有缩小段。后续插入应首先使用 HWM 以下的可用空块。
我可以使用alter table tab shrink space
.
我在 Oracle 12 和 Oracle 18c 中进行了测试。
如果您有权访问 My Oracle Support:
表使用的空间不会通过重复删除/插入操作重新使用(文档 ID 1601805.1)
因此,不只是从那里复制粘贴内容,上面的注释指出: