Руководство Concepts содержит обзор взаимосвязи объектов, сегментов, экстентов и блоков.
В вашей таблице есть логический сегмент, который имеет один или несколько экстентов и эти экстенты иметь один или несколько блоков данных (в файлах данных). Ваш файл данных имеет размер блока 8 КБ, но начальная длина табличного пространства составляет 64 КБ, что составляет 8 блоков. Вы можете увидеть начальный / следующий экстент, размер которого указан в представлении dba_tablespaces
, например:
select tablespace_name, initial_extent, next_extent
from dba_tablespaces;
Вы можете создать таблицу без пробелов, указав `` создание сегмента отложено '". Первый экстент затем не выделяется, пока вы фактически не вставите в него некоторые данные.
С немедленным созданием:
create table t_log (id number) segment creation immediate;
select bytes
from user_segments
where segment_type='TABLE' and segment_name='T_LOG';
BYTES
----------
65536
select extent_id, bytes, blocks
from user_extents
where segment_type='TABLE' and segment_name='T_LOG';
EXTENT_ID BYTES BLOCKS
---------- ---------- ----------
0 65536 8
С отложенным созданием сегмента:
create table t_log (id number) segment creation deferred;
select bytes
from user_segments
where segment_type='TABLE' and segment_name='T_LOG';
no rows selected
select extent_id, bytes, blocks
from user_extents
where segment_type='TABLE' and segment_name='T_LOG';
no rows selected
insert into t_log(id) values (42);
select bytes
from user_segments
where segment_type='TABLE' and segment_name='T_LOG';
BYTES
----------
65536
select extent_id, bytes, blocks
from user_extents
where segment_type='TABLE' and segment_name='T_LOG';
EXTENT_ID BYTES BLOCKS
---------- ---------- ----------
0 65536 8
Если Вы удаляете данные из таблицы, тогда экстенты / блоки не освобождаются и будут использоваться повторно при последующих вставках (обычно). Если вы truncate
таблица, то все данные удаляются и все, кроме начального экстента освобождаются. (Но будьте осторожны с truncate
, так как его нельзя откатить.)