基础学习--表的存储参数(三)
2010-04-21 16:18
127 查看
author: skate
time:2010-04-21
今天主要总结下关于table创建的相关参数,oracle东西真是太多了,只是个table参数就有非常多的内容,我是越查资料,内容越多。这里也只是简单介绍参数。关于每个参数的设置及不同的设置会产生什么影响,以后在详细讨论总结
表的存储参数
建表脚本:
CREATE TABLE TEST1
(
A INTEGER,
B VARCHAR2(100 BYTE),
C VARCHAR2(100 BYTE)
)
TABLESPACE YYTICKETS
PCTUSED 0
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL KEEP
)
LOGGING
COMPRESS
NOCACHE
PARALLEL ( DEGREE 2 INSTANCES DEFAULT )
MONITORING;
下面就上面的脚本参数来说明下其含义
TABLESPACE:指定表所在的表空间
在介绍PCTUSED ,PCTFREE 这两个参数的时候,要简单介绍下segment的管理方式(MSSM),如果segment采用manual管理方式的话,参数PCTUSED ,PCTFREE还有freelist,freelist group都起作用,一起来控制块的使用。但是如果segment采用auto的管理方式时(ASSM),参数PCTUSED ,还有freelist,freelist group都将被忽略(PCTFREE参数仍是使用),因为ASSM采用位图来管理。具体MSSM和ASSM的特点和使用,以后会针对的总结。
PCTUSED:这个参数是控制一个块何时进入可用列表,如果设置不合理会浪费空间,即虽然有很多可用空间的块,但无法加入可用列表(在MSSM时有作用,在ASSM忽略,)
PCTFREE:这个参数是控制一个块快满时,何时从可用列表移除,使其不再作为插入一个堆组织表的备选块(在MSSM和ASSM都起作用)
注意:
在indexes和IOT等复杂的数据结构中,除了初始创建或重建对象外,否则都不使用PCTFREE设置,因为这些对象必须放在该行所属的地方。
PCTUSED和PCTFREE常见的几种分配方案:
Pctfree 20 Pctused 40 --大量Update操作
Pctfree 5 Pctused 60 --大量Insert, Select, 少量Update
Pctfree 5 Pctused 90 --体积大的表, Select较多
以为上面的表所在的表空间上的segment采用ASSM管理方式所有没有freelist和freelist group这两个参数。
FREELIST:是oracle记录一个对象在高水位标记下块的使用情况。在MSSM方式中,块是通过可用列表(freelist)来控制管理使用。简单描述下可用列表的使用,其实一个segment有三种freelist:master freelist,process freelist,transaction freelist三种。其中master freelist和process freelist是主从协同关系的,当要使用数据块的时候,现在process freelist 上查找 可用数据块,如果没有在到master freelist上去一组空闲块到process freelist 然后再在上面分配所需块。segment在段头默认设置1,所以为了并发性能,避免freelist争用就所多分配几个freelist。
标记为满的块什么时候在回到freelist中呢?这就需要 PCTUSED和transaction freelist共同的作用来控制把块挂到freelist上面,具体原因以后分析。
FREELIST GROUP:每个segment只有一个master freelist,通知设置FREELIST GROUP参数可以增加master freelist,避免其争用。
INITRANS:这个参数是很重要的,它指定了初始化事务槽的数量。事务槽是一个十分重要的对象,每个事务要修改某个数据块的时候,需要在这个数据块中分配一个事务槽。如果当前没有空闲的事务槽,就需要动态扩展一个,每个事务槽需要24个字节,讲到事务槽,大家可能明白了Oracle分配空间为什么要从底部向顶部分配空间了,事务槽是从顶部向底部分配空间的,这样的话,两个分配方式不会冲突。一般情况下,缺省的事务槽参数并不会带来明显的性能问题,不过对于一些并发修改较大的表,如果PCTFREE参数设置过低,就会导致事务槽扩展的时候无法分配空间,从而导致事务等待事务槽
关于存储参数(storage子句)介绍之前也要事先说明下,关于表空间extent(最小分配单位)的分配方式,oracle是采用字典管理(DMT)和本地管理(LMT)。如果是DMT方式的话,sotrage的所有参数都起作用,如果是LMT的方式的话,storage的部分参数就被忽略了
表的存储参数(storage子句):
参考:http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/schema.htm#9079
对于LMT管理方式,INITIAL ,MINEXTENTS ,MAXEXTENTS ,BUFFER_POOL都是有作用的。
LOGGING/NOLOGGING :记录表的更改变化,这个log用于恢复。
COMPRESS :压缩数据,有的时候可以提高性能,节省空间
NOCACHE:是否缓存在default pool中
PARALLEL ( DEGREE 2 INSTANCES DEFAULT ):访问的并行度
MONITORING/MONITORING:是否允许系统收集此表的信息,在10g之前是通过alter table tablename monitoring/monitoring命令来启用是否允许监控,在10g中通过statistic_level参数来控制系统信息的收集,无法用上面的命令。
-------end-------
time:2010-04-21
今天主要总结下关于table创建的相关参数,oracle东西真是太多了,只是个table参数就有非常多的内容,我是越查资料,内容越多。这里也只是简单介绍参数。关于每个参数的设置及不同的设置会产生什么影响,以后在详细讨论总结
表的存储参数
建表脚本:
CREATE TABLE TEST1
(
A INTEGER,
B VARCHAR2(100 BYTE),
C VARCHAR2(100 BYTE)
)
TABLESPACE YYTICKETS
PCTUSED 0
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL KEEP
)
LOGGING
COMPRESS
NOCACHE
PARALLEL ( DEGREE 2 INSTANCES DEFAULT )
MONITORING;
下面就上面的脚本参数来说明下其含义
TABLESPACE:指定表所在的表空间
在介绍PCTUSED ,PCTFREE 这两个参数的时候,要简单介绍下segment的管理方式(MSSM),如果segment采用manual管理方式的话,参数PCTUSED ,PCTFREE还有freelist,freelist group都起作用,一起来控制块的使用。但是如果segment采用auto的管理方式时(ASSM),参数PCTUSED ,还有freelist,freelist group都将被忽略(PCTFREE参数仍是使用),因为ASSM采用位图来管理。具体MSSM和ASSM的特点和使用,以后会针对的总结。
PCTUSED:这个参数是控制一个块何时进入可用列表,如果设置不合理会浪费空间,即虽然有很多可用空间的块,但无法加入可用列表(在MSSM时有作用,在ASSM忽略,)
PCTFREE:这个参数是控制一个块快满时,何时从可用列表移除,使其不再作为插入一个堆组织表的备选块(在MSSM和ASSM都起作用)
注意:
在indexes和IOT等复杂的数据结构中,除了初始创建或重建对象外,否则都不使用PCTFREE设置,因为这些对象必须放在该行所属的地方。
PCTUSED和PCTFREE常见的几种分配方案:
Pctfree 20 Pctused 40 --大量Update操作
Pctfree 5 Pctused 60 --大量Insert, Select, 少量Update
Pctfree 5 Pctused 90 --体积大的表, Select较多
以为上面的表所在的表空间上的segment采用ASSM管理方式所有没有freelist和freelist group这两个参数。
FREELIST:是oracle记录一个对象在高水位标记下块的使用情况。在MSSM方式中,块是通过可用列表(freelist)来控制管理使用。简单描述下可用列表的使用,其实一个segment有三种freelist:master freelist,process freelist,transaction freelist三种。其中master freelist和process freelist是主从协同关系的,当要使用数据块的时候,现在process freelist 上查找 可用数据块,如果没有在到master freelist上去一组空闲块到process freelist 然后再在上面分配所需块。segment在段头默认设置1,所以为了并发性能,避免freelist争用就所多分配几个freelist。
标记为满的块什么时候在回到freelist中呢?这就需要 PCTUSED和transaction freelist共同的作用来控制把块挂到freelist上面,具体原因以后分析。
FREELIST GROUP:每个segment只有一个master freelist,通知设置FREELIST GROUP参数可以增加master freelist,避免其争用。
INITRANS:这个参数是很重要的,它指定了初始化事务槽的数量。事务槽是一个十分重要的对象,每个事务要修改某个数据块的时候,需要在这个数据块中分配一个事务槽。如果当前没有空闲的事务槽,就需要动态扩展一个,每个事务槽需要24个字节,讲到事务槽,大家可能明白了Oracle分配空间为什么要从底部向顶部分配空间了,事务槽是从顶部向底部分配空间的,这样的话,两个分配方式不会冲突。一般情况下,缺省的事务槽参数并不会带来明显的性能问题,不过对于一些并发修改较大的表,如果PCTFREE参数设置过低,就会导致事务槽扩展的时候无法分配空间,从而导致事务等待事务槽
关于存储参数(storage子句)介绍之前也要事先说明下,关于表空间extent(最小分配单位)的分配方式,oracle是采用字典管理(DMT)和本地管理(LMT)。如果是DMT方式的话,sotrage的所有参数都起作用,如果是LMT的方式的话,storage的部分参数就被忽略了
表的存储参数(storage子句):
参数名称 | 说明 |
INITIAL | 分配给Segment的第一个Extent的大小,以字节为单位,这个参数不能在alter语句中改变,如果指定的值小于最小值,则按最小值创建。在segment的ASSM和MSSM中都起作用,因为是初始分配啊!!(默认是64k的大小,在数据文件头用于管理extent的位图大小) |
NEXT | 第二个Extent的大小等于NEXT的初值,以后的NEXT值=前一NEXT大小乘以(1+PCTINCREASE/100),对于extent的DMT,表段按着next扩展。对于extent的LMT,如果是系统管理的LMT,oracle会自己计算扩展extent的大小,如果设置统一区大小(设置uniform),就按其指定大小扩展。 |
MINEXTENTS | Segment第一次创建时分配的Extent数量。DMT和LMT都适用 |
MAXEXTENTS | 随着Segment中数据量的增长,最多可分配的Extent数量 |
PCTINCREASE | 指定其后的Extent相对于上一个Extent所增加的百分比,如果PCTINCREASE为0,则Segment中所有新增加的Extent的大小都相同,等于NEXT的值,如果PCTINCREASE大于0,则每次计算NEXT的值(用上面的公式),PCTINCREASE不能为负数。 |
OPTIMAL | 仅与回滚段有关,当回滚段因为增长、扩展而超过此参数的设定范围时,Oracle系统会根据,情况动态地重新分配Extents,试图收回多分配的Extent。 |
FREELISTS | 只能在CREATE TABLE、CLUSTER、INDEX中指定FREELISTS和FREELIST GROUPS参数。模式对象中每一个自由列表组中自由列表的数量 |
FREELIST GROUPS | 用户创建的数据库对象的自由列表组的数量,只有用OPS并行服务器选项时才使用这一参数, 一个实例对应一个组。 |
BUFFER_POOL | 给模式对象定义缺省缓冲池(高速缓存),该对象的所有块都存储在指定的高速缓存中。 |
对于LMT管理方式,INITIAL ,MINEXTENTS ,MAXEXTENTS ,BUFFER_POOL都是有作用的。
LOGGING/NOLOGGING :记录表的更改变化,这个log用于恢复。
COMPRESS :压缩数据,有的时候可以提高性能,节省空间
NOCACHE:是否缓存在default pool中
PARALLEL ( DEGREE 2 INSTANCES DEFAULT ):访问的并行度
MONITORING/MONITORING:是否允许系统收集此表的信息,在10g之前是通过alter table tablename monitoring/monitoring命令来启用是否允许监控,在10g中通过statistic_level参数来控制系统信息的收集,无法用上面的命令。
-------end-------
相关文章推荐
- JavaScript基础学习<五>对象参数引用
- [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子
- Java中执行存储过程和函数(web基础学习笔记十四)
- 黑马程序员--Java基础学习笔记【参数传递、访问控制符、内部类】
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
- c++基础学习之函数与参数
- Shell基础学习(三) 传递参数
- VMware vSphere 4.1虚拟化学习手册7:存储基础
- 个人学习安卓基础案例的逻辑-人员信息存储
- 【C++基础学习】C++引用参数与指针参数
- Javascript 基础知识学习--javascript中的参数传递都是按值传递的
- Java学习笔记之语言基础――Java中的参数传递
- 验证选择每日学习总结:DropDownList是否已选择验证、存储过程参数为sql字符串问题、将截断字符串或二进制数据。\r\n语句已终止
- jsp基础学习(六)--jsp传递参数方法
- python--基础学习(五)参数位置传递、关键字传递、包裹传递及解包裹
- [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子
- Python新手学习基础之函数-关键字参数
- Python学习之基础语言篇——函数参数详解
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
- 存储过程 c# 基础封装 学习之用