無論是在我的會話中還是在我寫的博客中,Tempdb 始終是我的話題。然而,當談到 SQL Server 2022 中引入的重大性能變化時,我從未如此興奮過。他們解決了我們最大的性能瓶頸之一,即系統頁面閂鎖并發。
在 SQL Server 2019 中,他們通過引入內存優化的 tempdb 解決了所謂的元數據爭用問題,即在更新跟蹤表元數據的表時,屬于系統對象的頁面會占用頁面閂鎖。此外,產品團隊還對對象分配爭用進行了改進。這是對用于管理數據文件中空間分配的元數據頁面的爭用,這些頁面稱為頁面可用空間 (PFS) 頁面。創建或銷毀臨時表并在表中釋放它們,例如sys.objvalues 。最后,對臨時表緩存進行了更多改進,使我們能夠更好地重用未更改的臨時表。所有這些更改都提高了 tempdb 的性能,但仍然給我們留下了最大的瓶頸。這就是創建閂鎖的方式——系統頁面上的閂鎖。
2022 年 SQL Server 的改進解決了這個問題,并改變了全局分配圖 (GAM) 和(共享全局分配圖)SGAM 頁面閂鎖的執行方式。他們不再通過更新閂鎖來更新這些閂鎖,而是使用共享閂鎖來消除幾乎所有的爭用,如Microsoft發布的展示此更改效果的圖像所示。
使用 SQL 2019 升級之前
使用 SQL 2022 升級后
您可以清楚地看到其巨大的影響。更棒的是,這些新的增強功能將使我們所有人受益,尤其是那些默認情況下 tempdb 工作負載繁重的人。如果您只是升級到SQL Server 2022,您可以立即利用這些增強功能,而無需您做任何額外的工作或開銷。結果至少可以說是驚人的。