数据表的类型 段 行迁移 pctfree pctused initrans
2011-11-03 16:44
946 查看
关键词:数据表 段 行迁移 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)
数据库表的类型:
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)
相关文章推荐
- oracle概念和术语 建表时的一些参数pctfree initrans maxtrans sto
- PCTUSED和PCTFREE对数据操作的影响
- Pctfree&pctused&nitrans
- oracle 中的pctused、pctfree、inittrans、MAXTRANS、FREELIST GROUPS 和FREELISTS参数
- 设计一个例子,演示PCTUSED和PCTFREE对数据操作的影响
- 演示PCTUSED和PCTFREE对数据操作的影响
- oracle表空间中PCTFREE, PCTUSED, INITRANS, MAXTRANX参数的解释
- Oracle表 pctfree和pctused详解
- oracle中PCTFREE, PCTUSED, INITRANS, MAXTRANX参数
- oracle pctfree和pctused的含义
- pctfree和pctused,initrans,maxtrans,next
- FreeBSD 硬盘系统和数据的复制迁移实战(clone disk on FreeBSD)
- [转]oracle学习笔记一:pctfree、pctused and freelist
- 二、oracle pctfree和pctused详解
- 【oracle11g,17】存储结构: 段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线
- PCTFREE and PCTUSED Tips
- PCTFREE, PCTUSED, INITRANS, MAXTRANX, FREELIST PARAMETERS
- 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化
- Oracle pctfree,pctused,initrans,maxtrans
- PCTFREE&PCTUSED