Sql-Server

PAGEIOLATCH 等待和頁面預期壽命非常低

  • October 14, 2020

SQL Server 培訓,有以下場景:

Azure VM,DS 系列機器上的 SQL Server,它有 32 GB 的 RAM

伺服器具有以下性能條件:

- very high PAGELATCH_IO waits
- average Page Life Expectancy is 30
- nothing else is known

為了減少 PAGELATCH_IO 等待應該怎麼做?

選擇正確答案(只需選擇一個):

  1. 添加更多 tempdb 文件
  2. 啟用大頁面支持
  3. 在記憶體中啟用鎖定頁面
  4. 配置緩衝池擴展

訓練說正確答案是1) add more tempdb files

我認為正確的答案是4) Configure buffer pool extensions,基於:

- PLE is a number of seconds a page will stay in the buffer pool without removing
- PLE = 30 is too low, means high turnover in the buffer pool
- DS-series support Premium SSD drives, can place buffer pool extension on Premium SSD

但也可能是3) Enable lock pages in memory基於此 https://sqlperformance.com/2014/06/io-subsystem/knee-jerk-waits-pageiolatch-sh

誰是對的——我、培訓材料,還是你(你的選擇)?

順便說一句,不確定它們在 PAGELATCH_IO 下的含義,可能是 PAGEIOLATCH 或 PAGELATCH,我想答案取決於我們擁有的確切類型

您似乎沒有完全準確地複制此處培訓材料中的問題。

假設問題是關於 PAGELATCH_** 等待,並且鎖定的頁面在 tempdb 數據庫中,那麼這些等待可能是 tempdb 分配爭用的常見標誌。最常見的解決方案是增加 tempdb 文件的數量。

請參閱此 Microsoft 支持文章:

減少 SQL Server tempdb 數據庫中分配爭用的建議

要提高 tempdb 的並發性,請嘗試以下方法:

  • 增加tempdb中的數據文件數量以最大化磁碟頻寬並減少分配結構中的爭用。作為一般規則,如果邏輯處理器的數量小於或等於八 (8) 個,則使用與邏輯處理器相同數量的數據文件。如果邏輯處理器的數量大於八 (8),則使用八個數據文件。如果爭用繼續,則將數據文件的數量增加四 (4) 的倍數,直至達到邏輯處理器的數量,直到爭用降低到可接受的水平。或者,更改工作負載或程式碼。

如果我們已經懷疑 tempdb 爭用(因為閂鎖等待),那麼 PLE = 30 可能是由於 tempdb 使用量過大(如果您認為大量 tempdb 頁面被載入到記憶體中並反复釋放,從而導致 PLE 下降)。

因此,選項 1 很可能是正確答案,儘管需要更多資訊來確認(例如,知道閂鎖等待實際上是在 tempdb 中)。

引用自:https://dba.stackexchange.com/questions/277972