Oracle编程艺术读书比较--堆表

1.基本概念

执行CREATE TABLE语句时,默认得到的表类型就是堆组织表。其他类型的表结构需要在CREATE TABLE语句本身中指定它。
堆组织表中,数据以堆的方式管理。增加数据时,会使用段中找到的第一个能放下此数据的自由空间。从表中删除数据后,允许以后的INSERT和UPDATE重用这部分空间。堆(heap)是一组空间,以一种随机的方式使用。因此,无法保证按照放入表中的顺序取得数据。

有1个简单的技巧,来查看对于给定类型的表,CREATE TABLE语句中主要有哪些可用的选项。
首先,尽可能简单地创建表,然后使用DBMS_METADATA来查询这个表的定义。

  1. tony@ORA11GR2> create table t(x int primary key, y clob);  
  2.   
  3. Table created.  
  4.   
  5. tony@ORA11GR2> select dbms_metadata.get_ddl( 'TABLE''T' ) from dual;  
  6.   
  7. DBMS_METADATA.GET_DDL('TABLE','T')  
  8. ------------------------------------------------------------------------  
  9.   
  10.   CREATE TABLE "TONY"."T"  
  11.    (    "X" NUMBER(*,0),  
  12.         "Y" CLOB,  
  13.          PRIMARY KEY ("X")  
  14.   USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING  
  15.   TABLESPACE "USERS"  ENABLE  
  16.    ) SEGMENT CREATION DEFERRED  
  17.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING  
  18.   TABLESPACE "USERS"  
  19.  LOB ("Y") STORE AS BASICFILE (  
  20.   TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION  
  21.   NOCACHE LOGGING )  


现在可以根据需要,修改某些参数。
对于ASSM有3个重要选项,对于MSSM有5个重要选项。随着本地管理表空间的引入(推荐做法),其余的参数已经没什么意义了。
· FREELIST: 仅适用于MSSM。
· PCTFREE:ASSM和MSSM都适用。
· PCTUSED:仅适用于MSSM。
· INITRANS:ASSM 和MSSM 都适合。为块初始分配的事务槽数。如果会对同样的块完成多个并发更新,就应该考虑增大这个值。
· COMPRESS/NOCOMPRESS:ASSM 和MSSM 都适合。
  11g之前,选项是COMPRESS或者NOCOMPRESS,只有直接路径操作(例如CREATE TABLE AS SELECT, INSERT /*+ APPEND*/, ALTER TABLE T MOVE以及SQL*Loader直接路径加载)才能利用压缩。
  11g之后,选项是COMPRESS FOR OLTP,COMPRESS BASIC或者NOCOMPRESS。COMPRESS FOR OLTP启用所有操作的压缩(包括直接路径和常规路径),COMPRESS BASIC则只针对直接路径操作。

注意:单独存储在LOB段中的LOB数据并不使用表的PCTFREE/PCTUSED参数设置。这些LOB块以不同的方式管理:它们总是会填入,直至达到最大容量,而且仅当完全为空时才返回FREELIST。


2. 堆表总结

  堆表具有的唯一优点是 插入数据不需要采取任何措施,只需要顺其自然地安装插入的顺序存储,减少了插入大量数据的代价。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值