技术开发 频道

深度分析数据库的热点块问题

    我们还有另外一种方式

    select object_name
    from dba_objects
    where data_object_id in
    (select obj
    from x$bh
    where hladdr in
    (select addr
    from (select addr
    from v$latch_children
    order by sleeps desc)
    where rownum < 11)) ;

    OBJECT_NAME
    ------------------------------------
    I_CCOL2
    RESOURCE_PLAN$
    DUAL
    FGA_LOG$
    AV_TRANSACTION
    COMPANY_DRAFT
    MEMBER
    SAMPLE
    SAMPLE_GROUP
    VERTICAL_COMPONENT
    MEMBER_PK
    SAMPLE_GROUP_PK
    IM_BLACKLIST_PK
    IM_CONTACT
    IM_GROUP
    CMNTY_USER_MESSAGE
    CMNTY_VISITOR_INFO_PK
    IM_OFFLINEMSG_TID_IND
    OFFER
    OFFER_PK
    OFFER_EMAIL_IND
    OFFER_DRAFT
    CMNTY_USER_MESSAGE_TD_BSM_IND
    CMNTY_MESSAGE_NUM_PK
    BIZ_EXPRESS_MEMBER_ID_IND

    ……………………

    到这里我们基本能找到热点块对对应的对象。但实际上还有另外一个途径来获取这些信息,那就是和x$bh.tch 相关的一种方法。对于8i开始oracle提供了接触点(touch count)来作为block是冷热的标志,在一定条件满足的情况下block被进程访问一次touch count 增加一,到某个标准之后被移动到LRU热端(关于touch count 在这里不做详细介绍,那又将是一大篇文章)。那在短时间内从某种意义上讲,touch count 大的block可能暗示着在当前某个周期内被访问次数比较多。

    select distinct a.owner,a.segment_name,a.segment_type from
    dba_extents a,
    (select dbarfil,dbablk
    from (select dbarfil,dbablk
    from x$bh order by tch desc) where rownum < 11) b
    where a.RELATIVE_FNO = b.dbarfil
    and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk;

    OWNER SEGMENT_NAME SEGMENT_TYPE
    ------------------------------ ------------------------------ ------------------
    ALIBABA CMNTY_USER_MESSAGE TABLE
    ALIBABA MEMBER_PK INDEX
    ALIBABA OFFER_DRAFT_GMDFY_IND INDEX

    同上面一样还有这个方法

    select 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) ;
    OBJECT_NAME
    ---------------------------------------------------
    DUAL
    MEMBER_PK
    SAMPLE_GROUP_PK
    CMNTY_USER_MESSAGE_TD_BSM_IND
    OFFER_DRAFT_MID_GMDFY_IND
    OFFER_MID_GPOST_IND
    OFFER_DRAFT_PK
    MEMBER_GLLOGIN_IND
    OFFER_MID_STAT_GEXPIRE_IND
    SAMPLE_MID_STAT_IND

    10 rows selected.

    到这里,我们寻找热点块和热点对象的工作算是完成了,但我们还并没有解决问题。

0
相关文章