SQL Server等待事件—PAGEIOLATCH_EX

来源:https://www.cnblogs.com/kerrycode/archive/2020/02/11/12295284.html
-Advertisement-
Play Games

什麼是PAGEIOLATCH_EX等待事件? 下麵我們將對PAGEIOLATCH_EX等待事件的相關資料做一個簡單的歸納、整理。關於PAGEIOLATCH_EX,官方文檔的簡單介紹如下: PAGEIOLATCH_EX: Occurs when a task is waiting on a latch... ...


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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 下載安裝包 打開網站 https://www.mongodb.com/download-center/community查找與Linux版本一致的MongoDB安裝包。我這裡選擇安裝包格式為tgz壓縮文件,版本是RHEL7.0 Linux 64-bit X64 回到Xshell控制台,輸入下載命令 ...
  • btrfs,它名字挺多:B tree fs;Butter fs;Better fs 開源協議是GPL,2007年由Oracle研發 核心特性: 多物理捲支持,btrfs可由多個物理捲組成;支持RAID,可以聯機狀態下,添加,移除,修改 寫時複製(Cow:copy on write):修改前的文件內容 ...
  • 平臺預設 pmic 線性充電 sprd_2721_charge.c 命名以 pmic 型號+charge 為規則,實現平臺預設線性充電方案,文件將硬體實現和邏輯介面註冊放在同一個文件中。 probe函數: 其中來簡單介紹下sprd_2721_op的回調函數的: 其中sprdchg_chip_init ...
  • 半導體設備頭龍大廠應用材料推出新的製造系統,能夠以原子級的精準度,進行新式材料的沉積,而這些新材料是生產前述新型存儲器的關鍵。應用材料推出最先進的系統,讓這些新型存儲器能以工業級的規模穩定生產。 台積電近年來積極推動將嵌入式快快閃記憶體儲器(eFlash)製程改成MRAM及ReRAM等新型存儲器嵌入式製程 ...
  • 鼠年春節,大家都在時刻關心 2019nCoV 疫情發展,沒太多心思搞技術,就在這個時候,ARM 不聲不響搞了個大新聞,如果你登錄 ARM developer 網站,會發現 Cortex-M 家族多了一個新成員:Cortex-M55 ...
  • 為了在伺服器上跑爬蟲,以及學SegNet,研究了一圈看來linux是必學品了。在自己電腦上安裝了一個 1。官網下載iso,一個linux dvd是穩定版,選之,另一個stream版是更新更快的測試版,裡面軟體更新。 https://www.centos.org/download/ 2。刻u盤,用Wi ...
  • 該文為《 MySQL 實戰 45 講》的學習筆記,感謝查看,如有錯誤,歡迎指正 一、事務簡介 事務就是為了保證一組資料庫操作,要麼全部成功,要麼全部失敗。 事務是在引擎層實現的,也就是說並不是所有引擎都可以使用事務,MyISAM 就不支持事務,這也是為什麼會被 InnoDB 取代的原因。 說到事務, ...
  • [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txt--//以前寫的,使用DBMS_SHARED_POOL.MARKHOT標記熱的sql_id,這樣相同的sql語句使用不同的sql_id.--//鏈接:http://blog.itpub.net/267 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...