当前位置:  数据库>oracle

Oracle 数据块优化参数

    来源: 互联网  发布时间:2017-05-19

    本文导语:   用于数据块优化的两个参数:pctfree和pctused一般都是用在OLTP系统当中。两者并没有相互的关系,当满足其中一种条件的时候,就会被出现/移除free-list列表当中。   Oracle自动管理块空闲空间的条件:当一个插入或者更新操作...

  用于数据块优化的两个参数:pctfree和pctused一般都是用在OLTP系统当中。两者并没有相互的关系,当满足其中一种条件的时候,就会被出现/移除free-list列表当中。
 
  Oracle自动管理块空闲空间的条件:当一个插入或者更新操作的行在一个数据块中有足够空闲空间,并且这个空闲空间碎片状态,无法满足一行数据的使用。Oracel不总是自动整理碎片(合并空闲空间)的原因是,这回导致一定的系统资源开销。
 
  pctfree:当数据块中的数据量达到这个值将不允许继续插入数据
 
  pctused:当数据块中数据占用空间小于这个比例时,数据块会被再次使用
 
  行连接:指一行存储在多个块中的情况,这是因为该行的长度超过了一个块的可用空间大小,即行链接是跨越多块的行。一般是Insert操作时候。
 
  行迁移:指一个数据行不适合放入当前块而被重新定位到另一个块(那里有充足的空间)中,但在原始块中保留一个指针的情形。原始块中的指针是必需的,因为索引的ROWID项仍然指向原始位置。一般是update操作的时候。
 
    PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。
 
    PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert,一般默认是40,即40%,即:当数据低于40%时,又可以写入新的数据,这个时候处在下降期。 
 
一、计算公式:
 
    PCTFREE=(Average Row Size-Initial Row Size)*100/Average Row Size
 
    PCTUSED=(100-PCTFREE) -Average Row Size * 100/Availabe Data Space
 
    SQL> select table_name,AVG_ROW_LEN from user_tables where table_name in ('TAB1','TAB2');
 
二、举例说明
 
    假设你一个块可以存放100个数据,而且PCTFREE 是10,PCTUSED是40,则:不断的向块中插入数据,如果当存放到90个时,就不能存放新的数据,这是受pctfree来控制,预留的空间是给UPDATE用的。
 
    当你删除一个数据后,再想插入个新数据行不行?不行,必须是删除41个,即低于40个以后才能插入新的数据的,这是受pctused来控制的。
 
    注意:如果表空间上启用了ASSM,在建立表的时候,只能指定PCTFREE,否则可用指定PCTFREE和PCTUSED。
 
 
 
三、调整pctfree与pctused
 
1、通过user_tables的pct_free,pct_used来查看
 
select a.table_name, a.pct_free, a.pct_used, a.* from user_tables a;
 
说明:
 
pctfree表示用于保留更新操作的百分比,如果超过该值不能插入数据。
 
pctused表示数据所占最低百分比,如果达到pctfree时不能插入,delete后如果达到pctused才可以用来insert
 
 
 
2、如果你使用的是自动管理表空间pctused不需要设置
 
altertable tablename pctfree values;
 
说明:
 
pctfree默认是10,主要看更新的数据有多大,可以查看表的max_row_len如果很大又频繁更新可以考虑增加该值。
 
pctused主要看删除数据的大小,如果很大可以调大该值,如果不是很频繁可以设置小一些30-40
 
pctused+pctfree


    
 
 

您可能感兴趣的文章:

  • 深入解析Oracle参数及参数文件
  • Oracle数据库访问参数文件的顺序
  • Oracle初始参数与当前用户
  • Oracle中serveroutput参数一次设置永久保存方法
  • Oracle的spfile参数文件
  • Linux Oracle RAC内核参数
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • Sun Solaris运行Oracle数据库所需的内核参数
  • Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结果
  • Oracle Streams存储过程中的一些参数
  • 快速修复Oracle参数文件的另类方法
  • jps连接oracle9i数据库出现内部参数错
  • oracle 参数文件audit_trail的认识
  • 在linux下安装oracle时,使用sysctl检查系统参数时出现许多error信息,不知道怎么回事,望高手指点!
  • 每日Oracle:配置日志模式的相关参数log_archive_des
  • Oracle 子程序参数模式,IN,OUT,NOCOPY
  • Oracle 使用set修改数据库运行参数
  • oracle impdp network_link参数使用介绍
  • Oracle数据库中系统初始化参数分析
  • Oracle 启动例程 STARTUP参数说明
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE数据库常用字段数据类型介绍
  • 怎样调出ORACLE数据库中的数据,该如何连接?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • 关于JDBC连接Oracle数据库,是否必须有Oracle客户端
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • ORACLE日期相关操作
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 12c的九大最新技术特性介绍
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE中DBMS_RANDOM随机数生成包
  • Linux Oracle RAC内核参数 iis7站长之家
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • 网间Oracle的连接,远程连接Oracle服务器??
  • 请教:.profile中:if [ -d /opt/oracle/db01/app/oracle/product/9.2.0 ]是什么意思?
  • 在linux 中如何删除oracle db 与卸载oracle.
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • 如何将Aix上的oracle 物理备份 然后再在linux 系统上还原oracle
  • 那里有免费的oracle odbc driver for linux?或怎么破解easysoft oracle odbc driver安装包?急


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,