plsql 创建语句笔记

<span style="font-size:18px;">--------------------------------------------------------
--  DDL for Table TEST
--------------------------------------------------------

  CREATE TABLE "SERVICE_NAME"."TABLE_NAME"            //创建表的方式:create table "service_name"."table_name"
   (	"Property1" VARCHAR2(2 BYTE),                 //属性的类型为VARCHAR2</span>
<span style="font-size:18px;">        "LEVEL" VARCHAR2(4 BYTE),
	"CREATE_DATE" DATE                            //属性类型为DATE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING          
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "TABLESPACE_NAME" ;
 

   COMMENT ON COLUMN "SERVICE_NAME"."TABLE_NAME"."LEVEL" IS '等级';
 
   COMMENT ON TABLE "SERVICE_NAME"."TABLE_NAME"  IS '保存测试数据';</span>


create语句中的各个参数的意义:以下引自http://www.cnblogs.com/luyubin/archive/2009/03/18/1415249.html

创建表时参数PCTFREE和PCTUSED是什么意思?

pctfree:用于指定BLOCK中必需保留的最小空间的比例。
pctused:为一个百分比数值,当BLOCK中已经使用的空间降低到该数值以下时,该BLOCK才是可用的,达到或是超过这个数值的BLOCK是不可用的。
一般在控制具有独立segment结构的对象时,使用这两个参数来控制BLOCK的存储管理。
initrans:指定可以并发操作该表的事务的数目。
 
用CREATE 命令的PCTUSED、PCTFREE、INITTRANS、MAXTRANS、FREELIST GROUPS 和FREELISTS参数来控制表、索引或簇的数据块中的空间使用。

可使用PCTFREE和PCTUSED参数控制数据块何时进入或离开表、索引或簇的可用清单。 使用PCTFREE参数设置最大的阈值,以控制对将来的行的更新操作保留多少数据块空间。当某个数据块使PCTFREE装满时,ORACLE从相应段的可用清单中删除该块。 如果你预计只有很少的更新操作会增加行的大小,则可将PCTFREE设置为较低的值(如5或者10),使得ORACLE填满每个块的更多的空间。但是, 如果你预计更新操作将会经常增加行的大小,则将PCTFREE设置为较高的值(如20或30),使得ORACLE为已有行的更新操作保留更多的块空间;否则,将出现行链。

可使用PCTUSED参数设置最小块的阈值来控制一个数据块应在何时放回到相应段的可用清单中。例如,所有段的缺省PCTUSED设置为40%,因此,当事务处理删除数据块中的行时,如果它只有39%是装满的,ORACLE将该数据块放回到相应段的可用清单中 。如果你预计很少有删除操作,则可设置PCTUSED为较高的值(如60),当偶然的删除操作发生时,使数据块弹出可用清单。但是,如果你预计将PCTUSED 设置为较低的值(如40),使ORACLE不常产生块在表的可用空间中移进或移出的开销。

可使用INITRANS和MAXTRANS参数优化ORACLE如何在表、数据簇或索引的数据块中分配事务处理项。INITRANS参数确定为事务处理项预分配多少数据块头部的空间。当您预计有许多并发事务处理要涉及某个块时,可为相关的事务处理项预分配更多的空间,以避免动态分配该空间的开销。MAXTRANS参数限制并行使用某个数据块的事务处理的数量。当您预计有许多事务处理将并行访问某个小表时,则当创建表时,应设置该表的事务处理项预分配更多的块空间,较高的MAXTRANS 参数值允许许多事务处理并行访问该表INITRANS和MAXTRANS 参数的设置可能相应低一些(如分别为2和5)。使用这样的设置,很少为事务处理项保留窨,使该表数据块的更多空间用于数据。

可使用STORAGE子句的FREELIST GROUPS 参数控制段的可用清单组的数据量。使用FREELISTS 参数设置每组中可用清单的数量。
以下参见 http://blog.itpub.net/17203031/viewspace-688011/中的 数据表创建参数介绍(一、二、三)

 COMPRESS压缩参数

 

Compress参数含义很清楚:就是在存储数据表数据的时候是否启用压缩选项。压缩使用的级别是数据块block级别。Oracle对数据块的压缩采用相邻相同值合并的压缩算法。

 

Compress参数有两个系列参数:

 

1、OMPRESS FOR DIRECT_LOAD OPERATIONS:作用于Compress相同,适合于数据仓库OLAP系统。只在直接插入过程中在表或者分区上启用压缩技术;

2、COMPRESS FOR ALL OPERATIONS:适合于OLTP系统,针对所有的操作均启用了压缩选项。要求的版本较高。


 LOGGING:日志记录

LOGGING参数表示对数据表或者其他对象进行变化性操作的时候,是否计入到REDO日志中。默认情况下,Oracle对数据库对象的任何修改性操作都会计入到redo log中,作为数据库恢复使用。开启logging功能,是保证数据库数据一致性的重要一步。

 

有一些时候,我们可能会不希望记日志操作。因为logging的时候会存在相当的性能损失,为了避免这种损失,加快操作速度,我们可能会选择暂时性的设置数据表为nologging状态。比如,我们在进行大规模数据加载的时候,可能就会选择这种方式。

 

 

先不论nologging的好坏,有几个问题笔者需要说明。首先,启用数据表的nologging绝不意味着说一点重做日志都不书写。在运行过程中,数据表对应的索引对象等内容,都有一个重建的过程,这个过程是需要写入redo log的。第二,不启用redo log,的确会带来一定的性能提升。但是没有日志的数据库是极其危险的,一旦发生实例崩溃或者数据库崩溃这种情况,数据库数据丢失和不一致的情况是可能发生的。这种方法得不偿失。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值