Oracle的Pctfree

1、创建一张表

create table student(
student_id number
);

但是在pl/sql中查看却是以下的建表语句:

-- Create table
create table STUDENT
(
student_id NUMBER
)
tablespace SYSTEM
pctfree 10
pctused 40
initrans 1
maxtrans 255;

1)其中下面的几个参数是什么意思呢?

2)假如数据块是8k,但是真的全部都拿来存数据吗?

数据块的结构

1)块头
2)数据
3)空闲空间

高水位线概念

当表刚创建时,HWM明显位于这个表的第一个块中,当插入数据后,水位线会升高。
但当我们删除了一些数据后,甚至删除所有的数据。就会出现一种情况:许多块即使不包含了数据,但依然处于水位下下,而且会一直保持。
因为:HWM永远不会下降,除非使用rebuild、truncate或shrunk这个对象(shrunk是10g的新特性,仅ASSM支持)

ASSM:自动段存储管理

高水位线什么作用呢?

Oracle在全表扫描时会扫描HWM下所有块,即使其中不包含数据。
image

pctfree

1、数据块大小
2、参数的含义=20 = 不被使用的空间占20%
为一个块保留空间的百分比,表示数据块在什么情况可以被insert。
当数据块的可硬空间低于10%时,就不能被insert了,只能用于update。
即:当一个block在到达pctfree之前,该block处于上升期,可以被insert
3、为什么要留一些空间?
为了留给insert update等操作预留空间

pctused

指当块数据第一是多少百分比时,又可以重新被insert
=40 = 要使用40%,当低于40%时,oracle认为这个数据块使用率比较低了,可以进行insert操作。
当数据低于40%时,改block处于下降期,可以写入新的数据。

==注意:如果表空间上启用了ASSM,建表的时候只能执行PCTFREE,否则可以执行PCTFREE和PCTUSED

查看表空间是否启动了自动段管理

SELECT d.tablespace_name,
d.segment_space_management
FROM dba_tablespaces d
TABLESPACE_NAME SEGMEN
------------------------------ ------
SYSTEM MANUAL
SYSAUX AUTO
UNDOTBS1 MANUAL
TEMP MANUAL
USERS AUTO
SIM_DATA AUTO

posted on   yq1DB  阅读(642)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示