存储结构和关系
database
tablespace
segments:table、table partition(大数据量表,占多个segment)、cluster、index、index partition、index-organized table(IOT索引组织表)、undo segment、temporary segment、
LOB segment、Nested table、bootstrap segment;
extent(连续block,不能跨datafile)
block(多个OS blocks):show parameter db_block_size;块的大小在表空间级定义。
组成:
header
free space(位于中间,data由底部向上增涨)
data
块大小:
1.标准的块大小:
创建数据库时设置,不能更改,db_block_size;
SYSTEM、TEMP表空间是标准块大小;
块的缓存db_cache_size(默认48M);
2.非标准的块大小
2k-32k,2的次方;
创建非标准块大小
create tablespce xxx
datafile 'xxx' size 10M blocksize 8k;
块的参数
initrans初始化事务槽
maxtrans最大事务槽
pctfree用于已存在记录行update所留的空闲空间,用于已存在记录的扩张,默认10%,小于10%时block从freelist链中去除;
pctused:当block已用空间小于pctused时,把block增加到freelist链上,insert操作时,只会用freelist链的块;
数据块的管理方式:
1.自动管理
create tables 。。。。
segment space management auto;
2.手动管理
create tables 。。。。
segment space management manual;
HWM(高水位线)
特性:select、insert操作搜索高水位线下的块,delete操作高水位线不下降。
实验
设置autotrans跟踪事务(可选)
插入一百万条记录
begin
for i in 1 .. 1000000
loop
insert into m values(i,'boobooke');
end loop
;
commit;
end;
/
删除一百万条记录
delete * from m;
select count(*) from m;要读的比没删除记录时还高点
实验证明成功。
用truncate可使高水位线置位;
查看存储信息
dba_extents
dba_segments
dba_tablespaces
dba_data_files
dba_free_space
create table emp(....) tablespace xxx
storage(。。。)《-受限于create tablespace