【Oracle】oracle pctfree和pctused详解
一、建立表时候,注意PCTFREE参数的作用
PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。
PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert,一般默认是40,即40%,即:当数据低于40%时,又可以写入新的数据,这个时候处在下降期。
二、举例说明
假设你一个块可以存放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<90
3、查看自动管理表空间
select tablespace_name,segment_space_management from user_tablespaces; --segment_space_management为auto表示自动管理表空间
主要起到节省表空间的作用。
转自:https://www.cnblogs.com/leafcb/archive/2013/06/27/3159263.html
最新文章
- Python中的可迭代对象与迭代器对象
- 动态单链表的传统存储方式和10种常见操作-C语言实现
- 自定义select控件开发
- Debian 7.6 新编译内核 3.15.6 开机加载黑屏
- android 文件的权限
- 数据结构与算法javascript描述
- java关于随机数和方法重构
- Java Map 及相应的一些操作总结
- Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
- JavaScript对象类型之简单介绍
- webpack多入口优化
- 实验隐藏参数";_allow_resetlogs_corruption";的使用
- Hanlp分词1.7版本在Spark中分布式使用记录
- Visual Studio 2013 配置多个Release版本,并为每个版本配置预编译的宏
- CSS实现table固定宽度,超过单元格部分内容省略
- OpenVPN 2.2.1 之后期维护
- openssl 连接 https(nginx)
- 【062有新题】OCP 12c 062出现大量之前没有的新考题-16
- 原生js--鼠标事件
- 洛谷P3941入阵曲