验证堆表(heap table)存储方式
堆表(heap table)的存储方式:
Oralce 数据库系统中最普通,最为常用的即为堆表。
堆表的数据存储方式为无序存储,也就是任意的DML操作都可能使得当前数据块存在可用的空闲空间。
处于节省空间的考虑,块上的可用空闲空间会被新插入的行填充,而不是按顺序填充到最后被使用的块上。
上述的操作方式导致了数据的无序性的产生。
当创建索引时,会根据指定的列按顺序来填充到索引块,缺省的情况下为升序。
新建或重建索引时,索引列上的顺序是有序的,而表上的顺序是无序的,也就是存在了差异,即表现为聚簇因子。
验证:
1、创建table
Connected.
sql> create table t1
2 (a int,
3 b varchar2(4000) default rpad('*',4000,'*'),
4 c varchar2(3000) default rpad('*',3000,'*')
5 )
6 /
Table created.
sql> desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
A NUMBER(38)
B VARCHAR2(4000)
C VARCHAR2(3000)
2、插入数据
sql> insert into t1(a) values (1);
1 rows created;
sql> insert into t1(a) values (2);
1 rows created;
sql> insert into t1(a) values (3);
1 rows created;
sql> select a from t1;
A
----------
1
2
3
3、删除一行数据
sql> delete from t1 where a=2;
1 row deleted.
sql> select a from t1;
A
----------
1
3
4、再重新插入一行记录
sql> insert into t1(a) values (4);
1 row created.
sql> select a from t1;
A
----------
1
4
3
从以上可以看出,数据插入并不是按顺序插入,而是使用了原来被删除的那条记录的空间!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。