热点块问题中pctfree的设置

上一篇 / 下一篇  2008-04-30 14:10:41 / 个人分类:tuning

一段时间前做了一个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=45offs=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表之后一个块包含的行数减小,数据得到了更大的分布,从而在一定程度上减少了热点块问题发生。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-12  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 1841
  • 日志数: 32
  • 文件数: 2
  • 建立时间: 2008-04-16
  • 更新时间: 2008-08-26

RSS订阅

Open Toolbar