zoukankan      html  css  js  c++  java
  • SQL Server中与IO相关的等待类型:IO_COMPLETION和PAGEIOLATCH_*

    一个大的SQL语句操作,执行计划中包含了一个merge join操作,观察到SQL长时间处于IO_COMPLETION等待状态,如果是读取相关的表的数据,服务器应该全力为其服务,但是服务器的物理IO又远远没有达到瓶颈。
    这个IO_COMPLETION到底是在做什么?是表的数据页IO请求还在其他操作?如果是,跟PAGEIOLATCH_*是什么区别?如果不是,又是什么类型的操作?

    IO_COMPLETION 这种等待类型表示数据文件中的各种同步读和写操作,这些操作与表无关,并且从事务日志中读取。
    在等待I/O操作完成时发生。这种等待类型通常表示非数据页I/O。数据页I/O完成等待作为PAGEIOLATCH_*等待出现。
    IO_COMPLETION与PAGEIOLATCH_*的最大的区别是就在于IO_COMPLETION是非数据页的等待,而PAGEIOLATCH_*是数据页的IO等待
    IO_COMPLETION这种等待类型表示数据文件中的各种同步读和写操作,这些操作与表无关,并且从事务日志中读取。

    包括以下几种场景:
    1.从事务日志中读取日志块(在导致从磁盘读取日志的任何操作期间——例如恢复)
    2.在很多操作中,例如恢复、DB启动、恢复期间从磁盘读取分配位图(例如GAM、SGAM、PFS页)
    3.将中间排序缓冲区写入磁盘(称为“Bobs”)
    4.在merge join期间,向磁盘写入或者读取磁盘中的merge join的结果
    5.读写eager spools(数据缓存到磁盘的一种行为)到磁盘
    6.从事务日志中读取VLF头信息。

    参考:https://www.sqlskills.com/help/waits/io_completion/

  • 相关阅读:
    攻防世界新手练习题_MOBILE(移动)
    攻防世界新手练习题_CRYPTO(加密)
    攻防世界新手练习题_REVERSE(逆向)
    攻防世界新手练习题_PWN(漏洞利用)
    攻防世界新手练习题_WEB(渗透)
    攻防世界新手练习题_MISC(杂项)
    数据传输流程图
    leetcode hot 100- 62. 不同路径
    leetcode hot 100
    leetcode hot 100
  • 原文地址:https://www.cnblogs.com/wy123/p/9454670.html
Copyright © 2011-2022 走看看