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

关键词:数据表 段 行迁移 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)







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值