• 数据库执行计划慢导致I/O 慢


    Memory Statistics
    ~~~~~~~~~~~~~~~~~ Begin End
    ------------ ------------

    Host Mem (MB): 16,338.5 16,338.5
    SGA use (MB): 3,072.0 3,072.0
    PGA use (MB): 805.1 861.7
    % Host Mem used for SGA+PGA: 23.73 24.08


    异常响应:

    Physical read (blocks): 35,368.4 3,067.3
    Physical write (blocks): 6.8 0.6


    Tota Wait % DB
    Event Waits Time Avg(ms) time Wait Class
    ------------------------------ ------------ ---- ------- ------ ----------
    direct path read 912,622 306. 336 79.2 User I/O
    read by other session 119,841 51.5 430 13.3 User I/O
    log file sync 41,849 9467 226 2.4 Commit
    db file scattered read 15,466 6459 418 1.7 User I/O
    enq: TX - row lock contention 2 5208 2.6E+06 1.3 Applicatio
    DB CPU 3868 1.0
    db file sequential read 6,447 1635 254 .4 User I/O
    Disk file operations I/O 691 534. 774 .1 User I/O
    control file sequential read 377 167. 445 .0 System I/O
    log file switch (private stran 5 39.3 7851 .0 Configurat


    Physical Reads Elapsed
    Reads Executions per Exec %Total Time (s) %CPU %IO SQL Id
    ----------- ----------- ---------- ------ ---------- ------ ------ -------------
    1.23682E+08 7,632 16,205.7 97.7 306,686.8 1.0 98.9 ak7k07x5y8q12
    SELECT this_.ID as ID49_0_, this_.LICENCE as LICENCE49_0_, this_.TYPE as TYPE49_
    0_, this_.ROAD_TYPE as ROAD4_49_0_, this_.SPEED as SPEED49_0_, this_.STARTTIME a
    s STARTTIME49_0_, this_.ENDTIME as ENDTIME49_0_ FROM VI_EXTERNALWARNING this_ WH
    ERE this_.ENDTIME = :p0


    一.DirectPath Reads 说明
    在oracle 11g以前的版本中,如果对大表进行全表扫描,wait event是:db file scattered read;在11g中,如果对大表进行全表扫描,wait event是:direct path read;即在11g中,大表全表扫描是将数据块直接读入会话的pga区域。(具体的查看方法参考后面的示例)。
    在11g中,大表全表扫描时数据块不经过sga而直接进pga,这样会造成每次进行大表全表扫描,物理读都是很大,而在10g中,由于全表扫描的数据块在sga中已经存在,所以执行全表扫描时,它的物理读为0。
    但是这里主要是Oracle在优化策略上的进步,即假定大表频繁全表扫描这种现象,在生产库上不会太多,通过把数据直接读入pga,进而减少了cachebuffer的繁忙交换程度,提高了cachebuffer的使用效率.


    Elapsed Elapsed Time
    Time (s) Executions per Exec (s) %Total %CPU %IO SQL Id
    ---------------- -------------- ------------- ------ ------ ------ -------------
    306,686.8 7,632 40.18 79.3 1.0 98.9 ak7k07x5y8q12
    SELECT this_.ID as ID49_0_, this_.LICENCE as LICENCE49_0_, this_.TYPE as TYPE49_
    0_, this_.ROAD_TYPE as ROAD4_49_0_, this_.SPEED as SPEED49_0_, this_.STARTTIME a
    s STARTTIME49_0_, this_.ENDTIME as ENDTIME49_0_ FROM VI_EXTERNALWARNING this_ WH
    ERE this_.ENDTIME = :p0

    SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('ak7k07x5y8q12',0));
    该sql 使用到全表扫描,请优化

    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    SQL_ID ak7k07x5y8q12, child number 0
    -------------------------------------
    SELECT this_.ID as ID49_0_, this_.LICENCE as LICENCE49_0_, this_.TYPE
    as TYPE49_0_, this_.ROAD_TYPE as ROAD4_49_0_, this_.SPEED as
    SPEED49_0_, this_.STARTTIME as STARTTIME49_0_, this_.ENDTIME as
    ENDTIME49_0_ FROM VI_EXTERNALWARNING this_ WHERE this_.ENDTIME = :p0

    Plan hash value: 3931375654

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

    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------

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

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

    | 0 | SELECT STATEMENT | | | |
    11048 (100)| |

    | 1 | VIEW | VI_EXTERNALWARNING | 4 | 468 |

    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    11048 (1)| 00:02:13 |

    | 2 | UNION-ALL | | | |
    | |

    |* 3 | FILTER | | | |
    | |

    |* 4 | TABLE ACCESS FULL| MG_EXTERNAL_SPEED_WARNING | 1 | 55 |
    3 (0)| 00:00:01 |


    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    |* 5 | FILTER | | | |
    | |

    |* 6 | TABLE ACCESS FULL| MG_EXTERNAL_RESTRICTED_WARNING | 1 | 88 |
    2 (0)| 00:00:01 |

    |* 7 | FILTER | | | |
    | |

    |* 8 | TABLE ACCESS FULL| MG_EXTERNAL_IDLE_WARNING | 1 | 49 |
    6631 (1)| 00:01:20 |

    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------

    |* 9 | FILTER | | | |
    | |

    |* 10 | TABLE ACCESS FULL| MG_EXTERNAL_LONGTIMEXT_WARNING | 1 | 49 |
    4412 (1)| 00:00:53 |

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

    主要是 I/O 吞吐慢

    方向1:
    请OA 检查6.101 的 IO,是否正常


    方向2: 业务检查ak7k07x5y8q12 是否正常 ,此sql 消耗大量I/O

    Physical Reads Elapsed
    Reads Executions per Exec %Total Time (s) %CPU %IO SQL Id
    ----------- ----------- ---------- ------ ---------- ------ ------ -------------
    1.23682E+08 7,632 16,205.7 97.7 306,686.8 1.0 98.9 ak7k07x5y8q12
    SELECT this_.ID as ID49_0_, this_.LICENCE as LICENCE49_0_, this_.TYPE as TYPE49_
    0_, this_.ROAD_TYPE as ROAD4_49_0_, this_.SPEED as SPEED49_0_, this_.STARTTIME a
    s STARTTIME49_0_, this_.ENDTIME as ENDTIME49_0_ FROM VI_EXTERNALWARNING this_ WH
    ERE this_.ENDTIME = :p0


    正常响应:

    Physical read (blocks): 14,991.1 99.8
    Physical write (blocks): 21.4 0.1

    Top 10 Foreground Events by Total Wait Time
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Tota Wait % DB
    Event Waits Time Avg(ms) time Wait Class
    ------------------------------ ------------ ---- ------- ------ ----------
    DB CPU 2768 35.5
    direct path read 193,541 2075 11 26.6 User I/O
    db file scattered read 500,821 1465 3 18.8 User I/O
    read by other session 423,225 1165 3 14.9 User I/O
    log file sync 542,810 329. 1 4.2 Commit
    db file sequential read 106,779 157. 1 2.0 User I/O
    SQL*Net message to client 7,250,622 27.9 0 .4 Network
    control file sequential read 771 5 6 .1 System I/O
    Disk file operations I/O 1,434 2.8 2 .0 User I/O
    SQL*Net more data to client 25,644 1.2 0 .0 Network


    CPU CPU per Elapsed
    Time (s) Executions Exec (s) %Total Time (s) %CPU %IO SQL Id
    ---------- ------------ ---------- ------ ---------- ------ ------ -------------
    4,683.6 11,456 0.41 52.7 4,764.1 98.3 .0 ak7k07x5y8q12
    SELECT this_.ID as ID49_0_, this_.LICENCE as LICENCE49_0_, this_.TYPE as TYPE49_
    0_, this_.ROAD_TYPE as ROAD4_49_0_, this_.SPEED as SPEED49_0_, this_.STARTTIME a
    s STARTTIME49_0_, this_.ENDTIME as ENDTIME49_0_ FROM VI_EXTERNALWARNING this_ WH
    ERE this_.ENDTIME = :p0

  • 相关阅读:
    iOS之富文本总结
    iOS文字编辑之富文本介绍
    【原创】【小技巧】如何阻止每次手机链接到电脑上都会自动弹出图片和iTunes
    iOS枚举
    根据两点经纬度计算距离
    iOS设计模式之懒加载
    【小技巧】【源码】iOS开发中常见的小技巧,小知识点
    重要信息!Xcode 8 不支持第三方插件
    iOS开发 适配iOS10以及Xcode8
    【源码】模拟炮弹动画效果,平移动画
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/7054778.html
Copyright © 2020-2023  润新知