热点块问题中pctfree的设置

一段时间前做了一个STATSPACK,发现cache buffers chains等待较多,通过对x$bh的查询找到热点对象。(ORACLE9208

SQL> select owner,object_name from dba_objects where data_object_id in (select obj from (select obj from x$bh order by tch desc) where rownum < 11);

OWNER                          OBJECT_NAME

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

WWW                            FORUM_THREAD

WWW                            FUNCTIONS_INFO

WWW                            SYS_C003869

WWW                            SYS_C003120

现在只以FORUM_THREAD对象为例做调优。

先查看FORUM_THREAD对象的块分布:

SQL> select file_id,extent_id,block_id,blocks from dba_extents where segment_name='FORUM_THREAD';

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12          0      27441          8

        12          1      27449          8

        12          2      27457          8

        12          3      27465          8

        12          4      27473          8

        12          5      27481          8

        12          6      27489          8

        12          7      27497          8

        12          8      27505          8

        12          9      27513          8

        12         10      27521          8

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         11      27529          8

        12         12      27537          8

        12         13      27545          8

        12         14      27553          8

        12         15      27561          8

        12         16      27657        128

        12         17      27785        128

        12         18      27913        128

        12         19      28041        128

        12         20      47497        128

        12         21      47625        128

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         22      47753        128

        12         23      47881        128

        12         24      48009        128

        12         25      48137        128

        12         26      48265        128

        12         27      48393        128

        12         28      48521        128

        12         29      48649        128

        12         30      48777        128

        12         31      48905        128

        12         32      49033        128

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         33      49161        128

        12         34      49289        128

        12         35      49417        128

        12         36      49545        128

已选择37

以上信息表示FORUM_THREAD对象在保存在37extent中,由于此对象是一个表,我们再查看表的PCTFREE参数(表空间是非ASSM的)

SQL> select table_name,pct_free from dba_tables where table_name='FORUM_THREAD';

TABLE_NAME                       PCT_FREE

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

FORUM_THREAD                           10

PCTFREE参数为默认的10,对于我的系统访问量来说这个值已经不合适,应该适当增大

SQL> alter table forum_thread pctfree 40;

PCTFREE修改为40之后,通过一段时间的观察FORUM_THREAD对象仍然是排在前列的热点对象,通过对dba_extents的查看,数据分布仍然与之前差不多,此时可判断表的PCTFREE变化不影响已有块的数据分布。

通过对表进行move操作重组storage(注意move操作不能在线做)

SQL> alter table forum_thread move;

SQL> select file_id,extent_id,block_id,blocks from dba_extents where segment_name='FORUM_THREAD';

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12          0      27569          8

        12          1      27577          8

        12          2      27585          8

        12          3      27593          8

        12          4      47073          8

        12          5      47081          8

        12          6      47089          8

        12          7      47097          8

        12          8      47105          8

        12          9      49673          8

        12         10      49681          8

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         11      49689          8

        12         12      49697          8

        12         13      49705          8

        12         14      49713          8

        12         15      49721          8

        12         16      49801        128

        12         17      49929        128

        12         18      50057        128

        12         19      50185        128

        12         20      50313        128

        12         21      50441        128

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         22      50569        128

        12         23      50697        128

        12         24      50825        128

        12         25      50953        128

        12         26      51081        128

        12         27      51209        128

        12         28      51337        128

        12         29      51465        128

        12         30      51593        128

        12         31      51721        128

        12         32      51849        128

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         33      51977        128

        12         34      52105        128

        12         35      52233        128

        12         36      52361        128

        12         37      52489        128

        12         38      52617        128

        12         39      52745        128

        12         40      52873        128

        12         41      53001        128

        12         42      53129        128

        12         43      53257        128

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

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

        12         44      53385        128

        12         45      53513        128

        12         46      53641        128

        12         47      53769        128

        12         48      53897        128

已选择49

move表之后,可看到FORUM_THREAD对象被分布到了49extent中了,数据分布增大。

随机选取某几个数据块,通过DUMP信息的对比:

l         PCTFREE=10dump出的数据块信息片断

SQL> alter system dump datafile 12 block 27458;

Start dump data blocks tsn: 14 file#: 12 minblk 27458 maxblk 27458

……

ntab=1

nrow=45

frre=-1

fsbo=0x6c

fseo=0x3b1

avsp=0x345

tosp=0x345

0xe:pti[0] nrow=45 offs=0

以上信息中可看出27458数据块中包含45行数据。

l         PCTFREE=40,且对表做MOVE操作后,dump出的数据块信息片断:

SQL> alter system dump datafile 12 block 27586;

Start dump data blocks tsn: 14 file#: 12 minblk 27586 maxblk 27586

……

ntab=1

nrow=7

frre=-1

fsbo=0x20

fseo=0xd87

avsp=0xd67

tosp=0xd67

0xe:pti[0] nrow=7   offs=0

以上信息中可看出27586数据块中包含7行数据。

对比数据块导出信息,可看到在MOVE表之后一个块包含的行数减小,数据得到了更大的分布,从而在一定程度上减少了热点块问题发生。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17997/viewspace-257139/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17997/viewspace-257139/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值