学习
实践
活动
专区
工具
TVP
写文章
专栏首页bisal的个人杂货铺与IO相关的等待事件troubleshooting-系列6

与IO相关的等待事件troubleshooting-系列6

'db file parallel read'

当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。在恢复操作或为了优化而预处理缓冲(代替执行多个单块读)时也会有这种等待事件。

        如果这种等待事件的事件占据大部分,可以按照“db file sequential read”的处理方法。

Direct Path Reads and Writes

直接路径读与写

'direct path read'

Document 50415.1WAITEVENT: "direct path read" Reference Note

'direct path write'

Document 50416.1 WAITEVENT: "direct path write" Reference Note

'direct path read (lob)'

'direct path write (lob)'

        当数据库进程在磁盘与进程PGA内存之间执行一些特殊类型的多块IO操作时,会出现这种等待事件,这种操作会绕过Buffer Cache。可以同步或异步两种方式执行这样的IO操作。

       使用这种方式的一些例子:

1. 当内存排序区满了,使用临时表空间排序时,对IO的排序操作。

2. 并行执行(查询和DML)。

3. 预读操作(buffer预处理)。

4. 直接读取操作。

5. 对LOB段的IO操作(LOB段不会缓存到Buffer Cache)。

        用这种方式中等待的时间都会被记录(不会衡量用于执行IO操作的时间),但不能用Statspack的“Top 5 Wait/Timed Events”节中列表的相对位置来评估他们的真实影响。

        调优的纲领:

1. 建议使用异步IO。

2. 在Oracle 8i,通过设置DB_FILE_DIRECT_IO_COUNT实例参数最小化IO请求数量,DB_BLOCK_SIZE x DB_FILE_DIRECT_IO_COUNT = 系统的max_io_size。

        在Oracle 8i中,默认值是64个块。

        (在Oracle 9i,他被_DB_FILE_DIRECT_IO_COUNT参数取代,这个参数控制以字节(不是块)为单位的直接IO容量)。默认值是1Mb,但是如果系统的max_io_size更小,那默认值也会被缩小。

        可参考:Document 47324.1 Init.ora Parameter "DB_FILE_DIRECT_IO_COUNT" Reference Note。

3. 调整内存排序区,以使磁盘排序的磁盘IO最小化。

        在9i之前,使用自动SQL执行内存管理。(Document 147806.1 Automated SQL Execution Memory Management)

        在8i,手动调整不同的排序区。(Document 109907.1 How to Determine an Optimal SORT_AREA_SIZE)

4. 对于LOB段,可以存储到操作系统的文件系统中。

        Buffer Cache能够提供一些内存缓冲。

5. 通过查询VSESSION_EVENT(等待事件)或VSESSTAT(统计数据),明确执行直接IO操作的session。

 'physical reads direct', 'physical reads direct (lob)',

 'physical writes direct' & 'physical writes direct (lob)'

对这些SQL语句调优。

6. 根据V$FILESTAT或Statspack的“File IO Statistics”节,明确哪些数据文件是磁盘存储的瓶颈,将他们移到其他磁盘。

(未完待续)

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:http://blog.csdn.net/bisal复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 与IO相关的等待事件troubleshooting-系列1

    近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。

    bisal
  • 与IO相关的等待事件troubleshooting-系列7

            这种等待事件通常产生于一个或多个控制文件的IO。像redo日志切换和检查点事件,都会产生频繁的控制文件访问。因此调优这些实践可以间接地影响这种等...

    bisal
  • 与IO相关的等待事件troubleshooting-系列4

            这是一种最常见的IO相关的等待。大多数情况下,他指的是单块读,例如索引数据块或通过索引访问的表数据块,也能在读取数据文件头块时看到这种等待事件。...

    bisal
  • 与IO相关的等待事件troubleshooting-系列3

            使用Statspack类似的工具对数据库响应时间分析之后,已经表明与IO相关的等待事件限制了系统性能,有许多的方法可以判断这种问题。

    bisal
  • 与IO相关的等待事件troubleshooting-系列5

            这是另一种常见的等待事件。他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续(" scattered")缓存的时候。这...

    bisal
  • 与IO相关的等待事件troubleshooting-系列2

    数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。

    bisal
  • 与IO相关的等待事件troubleshooting-系列8

            Redo日志活动期间会有很多的等待事件,而且他们大多是和IO相关的。最重要的两个就是‘log file sync’和‘log file para...

    bisal
  • 与IO相关的等待事件troubleshooting-系列9

            这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作。

    bisal
  • 按 file 分组统计视图 | 全方位认识 sys 系统库

    在上一篇《按 user 分组统计视图 | 全方位认识 sys 系统库》中,我们介绍了sys 系统库中按 user 分组统计的视图,类似地,本期的内容将为大家介绍...

    老叶茶馆
  • 实战 MySQL 锁等待问题的定位与排查

    在 MySQL 的实际使用中,常常会遇到一条 SQL 执行非常慢的情况,此前我们总结了一系列博客来排查相关的问题:

    用户3147702
  • libev源码解析——I/O模型

            在《libev源码解析——总览》一文中,我们介绍过,libev是一个基于事件的循环库。本文将介绍其和事件及循环之间的关系。(转载请指明出于bre...

    方亮
  • MySQL主从复制的实现过程

    推荐阅读 微服务:springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 一、什么是主从复制 ...

    企鹅号小编
  • 初相识|performance_schema全方位介绍(PFS)

    现在,很高兴的告诉大家,我们基于 MySQL 官方文档加上我们的验证,整理了一份可以系统学习 performance_schema 的资料分享给大家,为了方便大...

    老叶茶馆
  • 等待事件统计视图 | 全方位认识 sys 系统库

    在上一篇《内存分配统计视图 | 全方位认识 sys 系统库》中,我们介绍了sys 系统库如何查询内存事件统计信息和buffer pool统计信息,本期的内容先给...

    老叶茶馆
  • 配置详解 | performance_schema全方位介绍

    在上一篇 《初相识 | performance_schema全方位介绍》 中粗略介绍了如何配置与使用performance_schema,相信大家对perfor...

    沃趣科技
  • 从根上理解高性能、高并发(六):通俗易懂,高性能服务器到底是如何实现的

    作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然与胸,什么线程池、零拷贝、多路复用、事件驱动、epoll等等名词信手拈来,又或许你对具有这些技...

    JackJiang
  • Tomcat NIO(5)-整体架构

    在上一篇文章里我们主要介绍了 tomcat NIO 的数据处理类,即实现读写封装的Request 和 Response,在这里我们主要介绍 NIO 整体架构。

    TA码字
  • Tomcat NIO(1)-开篇

    在日常工程或者开发中避免不了引入 web 服务器(或者是 tcp 服务器),常用服务器有tomcat,jetty,undertow,netty 等等,对于这些服...

    TA码字
  • MongoDB网络传输处理源码实现及性能调优-体验内核性能极致设计

    开源MongoDB代码规模数百万行,本篇文章内容主要分析MongoDB网络传输模块内部实现及其性能调优方法,学习网络IO处理流程,体验不同工作线程模型性能极致设...

    MongoDB中文社区

扫码关注腾讯云开发者

领取腾讯云代金券