《Oracle编程艺术》学习笔记(24)-堆组织表 .

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

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

tony@ORA11GR2> create table t(x int primary key, y clob);

Table created.

tony@ORA11GR2> select dbms_metadata.get_ddl( 'TABLE', 'T' ) from dual;

DBMS_METADATA.GET_DDL('TABLE','T')
------------------------------------------------------------------------

  CREATE TABLE "TONY"."T"
   (    "X" NUMBER(*,0),
        "Y" CLOB,
         PRIMARY KEY ("X")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"  ENABLE
   ) SEGMENT CREATION DEFERRED
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS"
 LOB ("Y") STORE AS BASICFILE (
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION
  NOCACHE LOGGING )

现在可以根据需要,修改某些参数。
对于ASSM有3个重要选项,对于MSSM有5个重要选项。随着本地管理表空间的引入(推荐做法),其余的参数已经没什么意义了。
· FREELIST: 仅适用于MSSM。
· PCTFREE:ASSM和MSSM都适用。
· PCTUSED:仅适用于MSSM。
· INITRANS:ASSM 和MSSM 都适合。为块初始分配的事务槽数。如果会对同样的块完成多个并发更新,就应该考虑增大这个值。
· COMPRESS/NOCOMPRESS:ASSM 和MSSM 都适合。
   关于表压缩->http://blog.csdn.net/fw0124/article/details/6868004
  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。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11980046/viewspace-736655/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11980046/viewspace-736655/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值