zoukankan      html  css  js  c++  java
  • 等待事件 wait event

    衡量数据库状况, 优化数据库等

    当一个进程连接到数据库后, 进程所经历的种种等待就开始被记录, 并且通过一系列的性能视图进行展示, 通过等待事件用户可以很快发现数据库的性能瓶颈, 从而进行针对性能的优化和分析.

    v$event_name

    oracle 等待事件主要分两类: 空闲等待(idle) 和 非空闲等待(non-idle)

    空闲等待: 指 oracle 正等待某种工作, 在诊断和优化数据库的时候, 不用过多注意这部分事件

    非空闲等待: 专门针对oracle的活动, 指数据库任务或应用运行过程中发生的等待, 这些等待事件是, 在调整数据库时应该关注和研究的.

    从等待事件发现瓶颈

    v$session, 记录当前连接的 session 信息

    v$session_wait 记录当前数据库连接的活动session正在等待的资源或事件信息

    v$system_event 记录数据库自启动以来所有等待事件汇总

    v$sqltext, 通常数据库出现瓶颈时, 可以通过v$session_wait找到正在等待资源的session, 通过session的sid, 联合v$session 和 v$sqltext视图就可以捕获这些 session 正在执行的 sql 语句.

    例如:

    1. select sid, event, p1, p1 text from v$session_wait;

    2. select sql_text

        from v$sqltext a

       where a.hash_value = (select sql_hash_value from v$session b where b.sid = ‘&sid’)

       order by piece ASC

    3. 使用该用户连接, 检查sql 执行计划

       set autotrace trace explain

       执行该(有问题的) sql 语句

       发现问题, 比如全表扫描 等, 进一步分析原因, 比如在某列上没有索引导致, 处理问题

    4. 检查问题是否解决完成

       select sid, event, p1, p1 text from v$session_wait;

    10g 以后, 新增加了 v$session_wait_history 视图, 这样就可以在查看前一天是否有比较严重的等待事件, 也可以对比前一天和当天等待事件的不同.

    ASH 新特性(根本性变革)

    如果说 v$session_wait_history 是一小步, 那么 ASH 则是一大步, ASH 以 v$session为基础, 每秒钟采样一次, 记录活动会话等待事件.

    顶级等待事件

    利用 v$system_event 视图

    select * from (select event, time_waited from v$system_event order by time_waited desc)

    where rownum < 10;

    查询最严重的前10个等待事件, 然后找出问题根源进行处理.(statspack Report 中的 Top 5 就是参考的这个)

    重要等待事件

    db file sequential read 数据文件顺序读取, User I/O 类, 如果这个等待事件比较显著, 可能表示在多表连接中, 表的连接顺序存在问题

    db file scattered read 数据文件离散读取, User I/O 类,通常大量的 db file scattered read 等待可能意味着应用问题或索引缺失.

    direct path read/write 直接路径读/写, 磁盘排序等会触发, 临时表空间使用肯定频繁(排序么肯定使用临时表空间), 这时候可以适当增大临时表空间, 修改参数.

    enqueue: 队列等待, 对共享资源的锁定机制, 例如: enq: PW – flush prewarm buffers

    latch free: 闩锁释放

  • 相关阅读:
    java基本数据类型
    解决Eclipse导入项目工程出现The project was not built since错误
    解决java错误“编码 GBK 的不可映射字符”
    helloworld每一个程序员的开始!
    java环境变量path也配置了,但还是显示javac不是内部或外部命令的解决办法
    WAS8.5.5根据CVE-2019-4279漏洞升级
    ansible 配置数据源源头为163
    升级openssh
    ansible-1 参数常用模块
    xlsxwriter模块详解
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3835067.html
Copyright © 2011-2022 走看看