SQL Server等待事件—PAGEIOLATCH_EX

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

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


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

更多相關文章
  • 下載安裝包 打開網站 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 ...
一周排行
  • Consul是HashiCorp公司推出的開源工具,Consul由Go語言開發,部署起來非常容易,只需要極少的可執行程式和配置文件,具有綠色、輕量級的特點。Consul是`分散式`的、`高可用`的、 `可橫向擴展`的用於實現分散式系統的服務發現與配置。 ...
  • Blazor的哪個特點, 可以讓程式員快速完成任務? 這隨筆講解的是使用代碼上下文來節約代碼, 讓驗證碼機制變得更加簡易. ...
  • 在C#中,struct和class都是用戶定義的數據類型,struct和class有許多不同之處,但主要的區別是: Class是引用類型,它保存在堆上並且能夠被垃圾回收;然而stuct是值類型,它保存在棧上或者內嵌在它的包含類型之中。因此,從總體上來說struct比class節省記憶體。 下圖是Cla ...
  • 這篇文章,我將帶領大家學習ASP.NET Core中的launchSettings.json文件。為了學習它,我們打開之前建的空白模板的ASP.NET Core項目。 從上面的圖片中你可以看到,我們項目的屬性中有一個launchSettings.json文件。那麼我們來一起學習這個重要的文件吧。la... ...
  • [TOC] 都是迭代,為啥我一定要用foreach ​ 問題起源於本人的一個練手的撲克牌程式:洗完牌之後要發給場上的三人。 ​ 只發給單個人的時候用 foreach 迴圈一下就好了,但三個人就有點麻煩了。 ​ 牌組用list保存你可能會想到這樣寫: 對於字典,可以使用 : 可能各位早會這樣弄了,讓各 ...
  • 首先以Winform項目開發舉例 1.完整的學習計劃 2.對於學習內容分類 3.良好的學習習慣 4.項目實踐 學習計劃 1.基礎篇 2.提高篇 3.應用篇 內容分類 1.語法 2.控制項 3.業務邏輯 學習習慣 1.時間安排 2.進度安排 3.記錄筆記 4.練習寫代碼 項目實踐 1.實現頁面展示 2. ...
  • 在進行 Asp.NetCore.MVC 文件上傳時,後臺無法正常讀取文件流保存,出現:Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead. 查找資料,發現需要 ...
  • 在這篇文章中,我將詳細介紹在ASP.NET Core中使用appsettings.json文件的重要性。這篇文章,我將詳細介紹下麵幾個問題:在ASP.NET Core應用程式中,有哪些不同的配置資源可用呢?什麼是ASP.NET Core appsetting.json文件?在ASP.NET Core ...
  • 這篇文章中,我將帶領大家一起詳細學習:ASP.NET Core Middleware Components.這篇文章中,我將詳細討論下麵幾個問題:什麼是ASP.NET Core 中的中間件組件?ASP.NET Core應用程式中,在哪裡來使用中間件組件?怎樣來配置ASP.NET Core 應用程式中... ...
  • 參考 ABP設計UI菜單欄的源碼分析,抽出了ABP這塊自定義擴展的實現。在ABP的源碼裡面有很多地方都用到了這種設計方式,實現了用戶自定義擴展。 新建一個空的asp.net core項目,新建一個類,源碼: StartUp類源碼: 擴展點:在 中提供用戶自定義擴展點,完美的是下瞭解耦。 參考: "B ...