昨天碰到一个很奇怪的问题,一个表,原先有1000w+的数据。然后我做了truncate,检查后发现,仍然站了1g+的空间,再truncate了几次,还是没有变化。我以为是truncate了另外一个用户了,但是仔细一看,没错啊。一时急了,直接把表drop掉了。不过在drop之前,我先备份了表结构,重建总可以了吧。
在重建的时候,我发现了问题的原因。原来这个表的initial达到了1g+,正好是查看的大小。难怪怎么截断都不行呢。于是将initial参数改为1m,minextents也改为1m,创建后占用空间就减少为1m了。
所以,影响表占用空间大小的不仅仅只有数据,初始化参数也有非常大的影响力。如果Initial参数设置过大,则表的初始段也会变得非常大。浪费了大量的空间。
案例:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 100000 next 100 maxextents unlimited pctincrease 0) tablespace zh;
查询其大小:
SQL> select segment_name, round(bytes/1024/1024, 4) "size(M)" from user_segments where segment_name = 'AAA';
/
SEGMENT_NAME size(M)
-------------------------------------------------------------------------------- ----------
AAA 784
具体Oracle还有更复杂的机制,等以后有时间可以深入研究一下。比如下面的情况:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 10 next 10 maxextents unlimited pctincrease 0) tablespace zh;
查询发现:
SQL> select segment_name, bytes, blocks, extents from user_segments where segment_name = 'AAA';
SEGMENT_NAME BYTES BLOCKS EXTENTS
------------------------------------------ ---------- ---------- ----------
AAA 2097152 256 2
不是建表时指定的初始化参数,这是为何?
在重建的时候,我发现了问题的原因。原来这个表的initial达到了1g+,正好是查看的大小。难怪怎么截断都不行呢。于是将initial参数改为1m,minextents也改为1m,创建后占用空间就减少为1m了。
所以,影响表占用空间大小的不仅仅只有数据,初始化参数也有非常大的影响力。如果Initial参数设置过大,则表的初始段也会变得非常大。浪费了大量的空间。
案例:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 100000 next 100 maxextents unlimited pctincrease 0) tablespace zh;
查询其大小:
SQL> select segment_name, round(bytes/1024/1024, 4) "size(M)" from user_segments where segment_name = 'AAA';
/
SEGMENT_NAME size(M)
-------------------------------------------------------------------------------- ----------
AAA 784
具体Oracle还有更复杂的机制,等以后有时间可以深入研究一下。比如下面的情况:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 10 next 10 maxextents unlimited pctincrease 0) tablespace zh;
查询发现:
SQL> select segment_name, bytes, blocks, extents from user_segments where segment_name = 'AAA';
SEGMENT_NAME BYTES BLOCKS EXTENTS
------------------------------------------ ---------- ---------- ----------
AAA 2097152 256 2
不是建表时指定的初始化参数,这是为何?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-713839/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12932950/viewspace-713839/