堆表(heap table)的存储方式:
- Oracle 数据库系统中最普通,最为常用的即为堆表。
- 堆表的数据存储方式为无序存储,也就是任意的DML操作都可能使得当前数据块存在可用的空闲空间。
- 处于节省空间的考虑,块上的可用空闲空间会被新插入的行填充,而不是按顺序填充到最后被使用的块上。
- 上述的操作方式导致了数据的无序性的产生。
- 当创建索引时,会根据指定的列按顺序来填充到索引块,缺省的情况下为升序。
- 新建或重建索引时,索引列上的顺序是有序的,而表上的顺序是无序的,也就是存在了差异,即表现为聚簇因子。
验证:1、创建tableSQL> conn scott/tigerConnected.SQL>
create table t12 (a int,3 b varchar2(4000) default rpad("*",4000,"*"),4 c varchar2(3000) default rpad("*",3000,"*")5 )6 /Table created.
SQL> desc t1Name 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----------123
3、删除一行数据SQL> delete from t1 where a=2;1 row deleted.SQL> select a from t1;A----------13
4、再重新插入一行记录SQL> insert into t1(a) values (4);1 row created.SQL> select a from t1;A----------
143从以上可以看出,数据插入并不是按顺序插入,而是使用了原来被删除的那条记录的空间!Oracle 在线重定义(将普通堆表转换成分区表) http://www.linuxidc.com/Linux/2011-11/48199.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址