SQL Server等待事件—PAGEIOLATCH_EX[通俗易懂]

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

SQL Server等待事件—PAGEIOLATCH_EX

什么是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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10015.html

(0)
上一篇 2023-01-27
下一篇 2023-01-27

相关推荐

  • redis数据库持久化问题处理「建议收藏」

    redis数据库持久化问题处理「建议收藏」redis数据库问题整理一、数据无法持久化1、背景介绍:经开发人员告知redis有3万多条数据无法写入内存,数据持久化停滞状态。2、排查过程:经过排查redis日志,发现报错信息如下,经过查询得知为…

    2023-03-25
    95
  • mysql读写分离在项目实践中的应用「终于解决」

    mysql读写分离在项目实践中的应用「终于解决」工程背景介绍: 我们开发了一个万能接口,用户通过这个接口中传入数据,我们拿到数据进行复杂的逻辑处理然后再将数据各种匹配展示分发等操作,处理的流程相当庞大,接口中我们只保留了接收数据和返回一个本次请求…

    2023-03-24
    99
  • JavaScript 28个常用字符串方法及使用技巧

    JavaScript 28个常用字符串方法及使用技巧今天我们就来看看JavaScript中有哪些常用的字符串方法!文章内容较多,建议先收藏再学习!前端必学基础。

    2023-03-02
    103
  • Spring Cloud Alibaba(五)RocketMQ 异步通信实现

    Spring Cloud Alibaba(五)RocketMQ 异步通信实现本文探讨如何使用 RocketMQ Binder 完成 Spring Cloud 应用消息的订阅和发布。 介绍 ‘RocketMQ’ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的

    2022-12-24
    97
  • k8s集群部署方案_docker redis集群

    k8s集群部署方案_docker redis集群作者:颜博 青云科技数据库研发工程师 目前从事 PostgreSQL 产品开发工作,热衷于 PostgreSQL 数据库的学习和研究 上一期我们介绍了 PG 集群复制管理工具 repmgr,能够轻松的

    2023-04-30
    87
  • python esb_elasticsearch 教程

    python esb_elasticsearch 教程python elasticsearch_dsl模块 在整理elasticsearch_dsl模块过程中,着实让我头大。 个人感觉就是资料太少而且很乱,不成体系,接口很多,没有规范。 此文凑合着看,以

    2023-04-18
    100
  • 【MySQL】主从复制[通俗易懂]

    【MySQL】主从复制[通俗易懂]纸上得来终觉浅,绝知此事要躬行。 概述 复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 My

    2023-03-10
    95
  • 事务和触发器_视图触发器存储过程必要性

    事务和触发器_视图触发器存储过程必要性MySQL视图 一.视图的概念 1.什么是视图: SQL语句的执行结果是一张虚拟表 我们可以基于该表做其他操作如果这张虚拟表需要频繁使用 那么为了方便可以将虚拟表保存起来 保存起来之后就称之为&quo

    2023-06-01
    89

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注