PAGEIOLATCH 等待和頁面預期壽命非常低
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 等待應該怎麼做?
選擇正確答案(只需選擇一個):
- 添加更多 tempdb 文件
- 啟用大頁面支持
- 在記憶體中啟用鎖定頁面
- 配置緩衝池擴展
訓練說正確答案是
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 中)。