什么是PAGEIOLATCH_EX等待事件? 下面我们将对PAGEIOLATCH_EX等待事件的相关资料做一个简单的归纳、整理。关于PAGEIOLATCH_EX,官方文档的简单介绍如下:

PAGEIOLATCH_EX

Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Exclusive mode. Long waits may indicate problems with the disk subsystem.

在任务等待 I/O 请求中缓冲区的闩锁时发生。 闩锁请求处于“独占”模式。 长时间的等待可能指示磁盘子系统出现问题。

 

In SQL Server, a latch is a short-term lightweight synchronization object.

Buffer latches including the PAGEIOLATCH_EX wait type are used to synchronize access to BUF structures and associated pages in the SQL Server database. The most frequently occurring buffer latching situation is when serialization is required on a buffer page. These buffer latches are not held for the complete period of the transaction. The PAGEIO latches are a subset of BUF latches used when the buffer and associated data page or the index page is in the middle of an IO operation. PAGEIOLATCH wait types are used for disk-to-memory transfers.

在SQL Server中,闩锁是短暂的轻量级同步对象。

缓冲区闩锁(包括PAGEIOLATCH_EX等待类型用于同步访问SQL Server 数据库中的 BUF 结构和关联页。最常见的缓冲区闩锁情况是在缓冲区页面上需要序列化操作时。这些缓冲区闩锁不会在事务的整个期间内保持不变。PAGEIO闩锁是缓冲区和相关数据页或索引页处于 IO 操作中间时使用的 BUF闩锁的子集。PAGEIOLATCH 等待类型用于磁盘到内存的传输。

PAGEIOLATCH_EX (exclusive mode page IO latch request)

When a SQL Server user needs a page that is not in buffer cache, the database must first allocate a buffer page, and then puts an exclusive PAGEIOLATCH_EX latch on the buffer while the page is transferred from disk to cache. During this operation SQL Server puts a PAGEIOLATCH_EX request on the buffer on behalf of the user. After the write to cache is complete, the PAGEIOLATCH_EX latch is released.

当SQL Server用户需要不在缓冲区高速缓存中的相关页面时,数据库必须首先分配一个缓冲区页面,然后在页面从磁盘传输到高速缓存时,在缓冲区上放置一个独占PAGEIOLATCH_EX闩锁。 在此操作过程中,SQL Server 代表用户在缓冲区上发出PAGEIOLATCH_EX请求。写入高速缓存完成后,将释放PAGEIOLATCH_EX闩锁。

Problem indication

 

Excessive PAGEIOLATCH_EX waits occur when data is transfered from disk to memory for update operations and these transfers take time to complete.

This may be an indication of disk contention or other disk subsystem bottlenecks.

当数据从磁盘传输到内存中以进行更新操作时,将出现大量的PAGEIOLATCH_EX等待,并且这些传输(磁盘IO操作)需要时间才能完成。这可能表明存在磁盘争用或其他磁盘子系统瓶颈。

PS:其实当一个大表发生大量数据删除操作时,也会出现大量的PAGEIOLATCH_EX等待事件。

Description:

 

This wait type is when a thread is waiting for the read of a data file page from disk to complete, and the thread is going to modify the page structure once it is in memory (EX = EXclusive mode). The Latches Whitepaper in the sidebar on the right has a description of all latch modes and their compatibility with other latch modes.

(Books Online description: “Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Exclusive mode. Long waits may indicate problems with the disk subsystem.”)

这种等待类型是线程正在等待从磁盘读取数据文件的相关页面到内存的完成,并且一旦线程将修改内存中的页面结构(EX = EXclusive模式)。 右侧边栏中的“闩锁白皮书”介绍了所有闩锁模式及其与其他闩锁模式的兼容性。

(在线丛书描述:“当任务正在等待I / O请求中的缓冲区的闩锁上时发生。闩锁请求处于互斥模式。长时间等待可能表明磁盘子系统有问题。”)

PAGEIOLATCH_EX

A query is waiting for exclusive write access to a page in order to add data to the page, but the page is not currently in memory and has to be loaded from disk.

Page latches are lightweight, non-configurable locks used by internal processes within SQL Server to manage access to the page buffer in memory.  When SQL Server has to read pages from the disk into the memory buffer or from the buffer out to disk, it must place latches on the buffer pages while the processes take place.

It’s normal to see some PAGEIOLATCH_* waits, but if you’re frequently seeing them with wait times consistently above 10 milliseconds and you’re experiencing some type of latency, it suggests that the I/O subsystem is under pressure. Conversely, if you see many brief waits, you may be affected by increased I/O activity.

 

查询正在等待对页面的独占写入访问,以便将数据添加到页面,但是该页面当前不在内存中,必须从磁盘加载。

闩锁是SQL Server 内部进程用于管理对内存中页面缓冲区的访问的轻量级、不可配置的锁。当SQL Server必须将磁盘中的页面读取到内存缓冲区中或从缓冲区中读取到磁盘时,它必须在进程进行时将闩锁放在缓冲区页面上。

看到一些PAGEIOLATCH_ *等待是很正常的,但是如果您经常看到它们的等待时间始终超过10毫秒,并且遇到某种类型的延迟,则表明I/O子系统面临压力。 相反,如果您看到许多短暂的等待,则可能会受到I/O活动增加的影响。

参考资料:

https://logicalread.com/2012/11/12/sql-server-pageiolatch_ex-wait-type/#.XkH2KCIzaHs

https://www.sqlskills.com/help/waits/pageiolatch_ex/

https://documentation.red-gate.com/sm4/working-with-overviews/using-performance-diagnostics/list-of-common-wait-types/pageiolatch_ex

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

SQL Server等待事件—PAGEIOLATCH_EX的更多相关文章

  1. [翻译]SQL Server等待事件—THREADPOOL

      前言: 本文是对SQLSkills上一篇关于SQL Server中THREADPOOL等待的博客的翻译,本文也不是完全翻译,有些地方适当加入了自己的一些认知.如有翻译不对或不好的地方,敬请指出,大 ...

  2. SQL Server等待事件—RESOURCE_SEMAPHORE_QUERY_COMPILE

    等待事件介绍 关于等待事件RESOURCE_SEMAPHORE_QUERY_COMPILE,官方的介绍如下: Occurs when the number of concurrent query co ...

  3. SQL Server等待事件新解

    资源等待类型 并行:CXPACKET Buffer:PAGEIOLATCH_X 非Buffer:LATCH_X I/O:ASYNC_IO_COMPITION:IO_COMPITION CPU:SOS_ ...

  4. [转载]sql server 等待类型

    下表列出各任务所遇到的等待类型. 等待类型 说明 ASYNC_DISKPOOL_LOCK 当尝试同步并行的线程(执行创建或初始化文件等任务)时出现. ASYNC_IO_COMPLETION 当某任务正 ...

  5. sql server等待类型

    sql server 各种等待类型-转 sql server各个等待类型及解决办法:https://www.sqlskills.com/help/waits/writelog/其他等待类型的描述和解决 ...

  6. SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事 ...

  7. SQL Server扩展事件-- 使用system_health默认跟踪会话监控死锁

    SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 转自:http://blog.51cto.com/ultrasql/160037 ...

  8. SQL Server扩展事件system_health会话总结

    system_health会话概念 我们知道扩展事件(Extended Events)是从SQL Server 2008开始引入的.system_health会话是SQL Server默认包含的扩展事 ...

  9. SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events

    由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心 ...

随机推荐

  1. 实用代码|javaMail发送邮件(文末重磅资源!)

    每天进步一点点,距离大腿又近一步!阅读本文大概需要5分钟 JavaMail发送邮件,简单实用,了解一下呗~ 1.开启邮箱MAP/SMTP服务,获取第三方授权码 以QQ邮箱为例 2.主要代码 maven ...

  2. Qt下Armadillo矩阵函数库的添加

    其实本文严格说只能算VS2013添加Armadillo教程,因为为了省事,用的是VS2013编译器版本的Qt,Armadillo也直接用了自带例子中的blas_win64_MT.dll.blas_wi ...

  3. zabbix3.4源码安装步骤

    zabbix3.4源码安装步骤1.安装环境: 安装机器:22.224.9.227 以下简称监控机: 操作系统信息:内核版本: Linux version 2.6.18-194.1.AXS3 (pack ...

  4. PDO和Mysqli的区别

    参考:http://www.cnblogs.com/feng18/p/6523646.html 人家写的不错

  5. Arduino系列之DHT11模块采集数据(一)

    下面我将介绍DHT11模块的相关用法 DHT11数字传感器概述:是一款含有已校准数字信号输出的温湿度复合传感器 .它应用专用的数字模块采集技术和温湿度传感技术 ,确保产品具有极 高的可靠性与卓越的长期 ...

  6. java加解密算法--DES

    ECB import sun.misc.BASE64Decoder; import javax.crypto.*; import javax.crypto.spec.DESKeySpec; impor ...

  7. eclipse编写代码所遇到的问题

    spring方面: 1.Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListabl ...

  8. gcc 相关总结 动态链接库

    #include < >与#include " " #include < >:直接到系统指定的目录中去找头文件. #include " " ...

  9. Codeforces_540_C

    http://codeforces.com/problemset/problem/540/C 简单bfs,注意结束条件. #include<iostream> #include<cs ...

  10. SpringBoot项目版本升级:从1.5.3升级到2.1.8版本

    SpringBoot项目版本升级:从1.5.3升级到2.1.8版本 前言 简单记录一次本人在自己的SpringBoot项目project-template中,把1.5.3版本升级到2.1.8版本时升级 ...