数据表的类型 段 行迁移 pctfree pctused initrans

本文介绍了数据库中的不同表类型,包括堆组织表、索引组织表等,并详细解释了段的概念及其空间管理方式,如MSSM和ASSM。此外还讨论了高水位线、行迁移以及PCTFREE等关键概念。

关键词:数据表 段 行迁移 pctfree pctused initrans


数据库表的类型:


1.堆组织表 ***
2.索引组织表
3.索引聚簇表
4.散列聚簇表
5.有序散列聚簇表
6.嵌套表
7.临时表
8.对象表
9.外部表


段(segment)是占用磁盘上存储空间的一个对象。


1.一个表,一个索引也是一个段。除非是表分区,索引分区,则会出现一个表,索引对多个段的情况。
2.表,索引本身只是一个逻辑定义,不是物理的。

段空间管理


手动段空间管理(Manual Segment Space Management,MSSM)
须关注freelists,freelist groups,pctfree,pctused,initrans,maxtrans等参数
自动段空间管理(Automatic Segment Space Management,ASSM)
只须关注PCTFREE参数

高水位线(high-water mark,HWM):

把表想象成从左到右依次排开的一系列块,高水位线就是包含了数据最右边的块。
用了对象的块就会把HWM升高,只有到重建,截除或收缩这个对象,才会把HWM降低。
delete表中的行不会把HWM降低,truncate能把表的HWM置回0。
每次段全面扫描时,都会从头扫描到HWM。如果其中delete了挺多内容,则每次都须扫描很多空块,影响性能。
例子:创建一个10000行的表,select count(*),再delete全部行,再select count(*),发现时间是一样的。


行迁移

更新一行时,使其变大,原数据块再也容纳不下,则留下一个转发地址,就把整行迁移到别的数据块上。
这不仅是读取数据块时多一次I/O的问题,如果很多数据块出现行迁移,而且大量用户在访问这些块,缓存区每次缓存从一个块变成两个块,还有闩的问题,所以尽量避免行迁移。
迁移后的数据块如果自身在增大,容量不够后,会把行迁回原地。如果原地没足够空间,会寻找新的数据块去容纳,并且把原数据块的转发地址指向新的宿主,避免了多层间接迁移的问题。


PCTFREE(一般是10%):一个数据块保留以待扩充行时使用的空间。
PCTFREE高了,浪费空间;低了,容易产生行迁移。
PCTUSED:当数据块的容量降低到PCTUSED后,可以重新挂到freelist中,以供使用。(在ASSM中不用考虑)


INITRANS
段中每个块都有一个块首部,首部有一个事务表,事务表中会建立一些条目来描述块中哪些行被哪些事务锁定。事务表出事大小为INITRANS,默认为2。可动态扩展到MAXTRANS.(ORACLE10G后忽略了MAXTRANS,段的MAXTRANS都是255)







-- HZERO.XMC_LCDP_REQUEST definition CREATE TABLE "HZERO"."XMC_LCDP_REQUEST" ( "ID" NUMBER, "LCDP_NO" VARCHAR2(20) NOT NULL ENABLE, "PO_ID" NUMBER NOT NULL ENABLE, "REQUESTOR" VARCHAR2(50) NOT NULL ENABLE, "MOBILE" VARCHAR2(20), "DEPT_CODE" VARCHAR2(50) NOT NULL ENABLE, "EMAIL" VARCHAR2(100), "LC_NO" VARCHAR2(50), "ISSUE_DATE" DATE, "ISSUE_BANK" VARCHAR2(100), "BANK_CHARGES" VARCHAR2(255), "DESTINATION" VARCHAR2(255), "LC_AMOUNT" NUMBER(23,4), "LC_DEPOSIT" NUMBER(23,4), "EXPIRY_DATE" DATE, "DEPARTURE" VARCHAR2(255), "STATUS" VARCHAR2(50) NOT NULL ENABLE, "CURRENT_OWNER" VARCHAR2(100), "CREATED_AT" DATE DEFAULT SYSDATE, "UPDATED_AT" DATE, "CREATED_BY" VARCHAR2(50), "UPDATED_BY" VARCHAR2(50), "VERSION" NUMBER DEFAULT 0, "IS_DELETED" CHAR(1) DEFAULT 'N', "TENANT_ID" NUMBER NOT NULL ENABLE, PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ENABLE, UNIQUE ("LCDP_NO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ENABLE ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING TABLESPACE "HZERO" ; CREATE INDEX "HZERO"."IDX_XMC_LCDP_OWNER" ON "HZERO"."XMC_LCDP_REQUEST" ("CURRENT_OWNER") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ; CREATE INDEX "HZERO"."IDX_XMC_LCDP_REQUESTOR" ON "HZERO"."XMC_LCDP_REQUEST" ("REQUESTOR") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ; CREATE INDEX "HZERO"."IDX_XMC_LCDP_STATUS" ON "HZERO"."XMC_LCDP_REQUEST" ("STATUS") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ; CREATE UNIQUE INDEX "HZERO"."SYS_C00418597" ON "HZERO"."XMC_LCDP_REQUEST" ("ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ; CREATE UNIQUE INDEX "HZERO"."SYS_C00418598" ON "HZERO"."XMC_LCDP_REQUEST" ("LCDP_NO") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE "HZERO" ; COMMENT ON TABLE HZERO.XMC_LCDP_REQUEST IS 'LCDP请求主表'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.ID IS '主键ID'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.LCDP_NO IS 'LCDP编号'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.PO_ID IS '采购订单ID(无外键)'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.REQUESTOR IS '申请人(工号+姓名拼接)'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.MOBILE IS '手机号'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.DEPT_CODE IS '部门编码'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.EMAIL IS '邮箱'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.LC_NO IS '信用证编号'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.ISSUE_DATE IS '开证日期'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.ISSUE_BANK IS '开证银'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.BANK_CHARGES IS '银费用'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.DESTINATION IS '目的地'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.LC_AMOUNT IS '信用证金额'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.LC_DEPOSIT IS '信用证保证金'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.EXPIRY_DATE IS '到期日期'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.DEPARTURE IS '启运地'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.STATUS IS '状态(审批中/完成等)'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.CURRENT_OWNER IS '当前处理人姓名'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.CREATED_AT IS '创建时间'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.UPDATED_AT IS '更新时间'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.CREATED_BY IS '创建人'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.UPDATED_BY IS '更新人'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.VERSION IS '版本号(用于乐观锁)'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.IS_DELETED IS '逻辑删除标识'; COMMENT ON COLUMN HZERO.XMC_LCDP_REQUEST.TENANT_ID IS '租户ID'; 这个是我之前的 根据你最新的 给我重新生成
08-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值