oracle优化--表优化(pctfree参数)

本文通过实验探讨了Oracle数据库中pctfree参数对表存储和查询性能的影响。当pctfree设置较低时,适用于只增不改的历史记录表,可以节省空间和扫描成本。然而,如果表存在大量更新操作,pctfree较低会导致行迁移,从而降低修改和查询性能。实验结果显示,pctfree为30的表在全表扫描时CPU消耗较pctfree为5的表增加约20%,且在update操作后,性能消耗更大。
摘要由CSDN通过智能技术生成

试验结论:

1、当一张表自建立后只有新增基本不更新时(如存放历史记录的表),可以将pctfree参数尽量调低,这样表数据存储空间以及全表扫描时消耗都会更低;

2、但当表存在大量的update操作时,pctfree调低将会导致修改操作以及修改后表查询性能的性能下降,主要原因为产生了行迁移或行迁移



试验步骤:


一、创建试验表,分别设置pctfree为30与5


create table t_pctfree_30

    (

    name varchar2(20),

    created date

    )

    tablespace users

    pctfree 30;



create table t_pctfree_5

    (

    name varchar2(20),

    created date

    )

    tablespace users

    pctfree 5;


二、插入随机字符串


begin

    for i in 1 .. 10000 loop

    insert into t_pctfree_30 values(dbms_random.string('u', 10),sysdate+s_test_id.Nextval/24/60/60);

    end loop;

    end;

/


begin

    for i in 1 .. 10000 loop

    insert into t_pctfree_5 values(dbms_random.string('u', 10),sysdate+s_test_id.Nextval/24/60/60);

    end loop;

    end;

/


三、查看两张实验表占用空间情况


SQL> select s.segment_name,s.BYTES,s.blocks from user_segments s where s.segment_name in ('T_PCTFREE_5','T_PCTFREE_30');


SEGMENT_NAME

--------------------------------------------------------------------------------

     BYTES     BLOCKS

---------- ----------

T_PCTFREE_5

    327680    40


T_PCTFREE_30

    393216    48


四、开启执行计划,查看查询性能消耗,可以发现PCTFREE为30的表比5的实验表全表扫描时,cpu消耗增加20%左右


SQL> select count(0) from T_PCTFREE_30;



Execution Plan

----------------------------------------------------------

Plan hash value: 3114683171


---------------------------------------------------------------------------

| Id  | Operation    | Name   | Rows  | Cost (%CPU)| Time   |

---------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值