Sql-Server

tempdb 自動增長的最佳實踐是什麼?

  • May 6, 2019

我有一個客戶端伺服器,該實例上有大約 15 個數據庫,數據總量約為 100 GB。其中一個數據庫用於 sysaid 應用程序。他的臨時數據庫文件是一個 mdf 一個 ndf,當然還有一個 ldf。mdf 與其他 mdf 位於同一驅動器上,如果是 ldf 文件也是如此。

當我設置自動增長屬性時,我知道我應該將其保持為不受限制的增長,但是當我需要在自動增長 % 或 MB 之間進行選擇時,該選擇什麼?我怎麼知道要配置什麼號碼?

提前致謝!

對我來說,最好的做法是在一開始就將文件大小調整到足夠大,以適應您期望的增長。

讓我們使用一些簡單的數字。假設您有一個已分配給 tempdb 的 100 GB 驅動器(或 100 GB 的某個共享驅動器)。您的實例有 4 個 tempdb 文件,您決定將它們最初設置為 100 MB,然後一次增長 10 MB。最初,該 100 GB 驅動器或切片如下所示(顯然不是按比例縮放):

在此處輸入圖像描述

當您的系統使用 tempdb 資源時,每個 tempdb 文件將增長 10 MB 到 10 MB。經過幾次成長:

在此處輸入圖像描述

請注意,每個增長事件雖然可能很快,但會強制所有連接等待。這在未啟用即時文件初始化時更為明顯,並且如果文件配置為一起增長(在某些版本中需要跟踪標誌,但這是正確的做法,因為您不希望任何單個文件比其他人大)。

當您到達驅動器的盡頭時,所有 4 個文件將無法同時增長。這是一個業務連續性事件。當 tempdb 無法在此處增長時,活動將停止:

在此處輸入圖像描述

現在,如果您要達到這一點,您需要承認您需要更改使用 tempdb 的方式,或者 100 GB 是不夠的,您需要分配更多空間。但我認為最好從這裡開始並為您的 tempdb 初始數據文件大小配置此大小:

在此處輸入圖像描述

好吧,從技術上講,我會將它們的大小設置為每個 20 GB,自動增長 500 MB。這使您仍然可以在填充 100GB 片之前得到很好的警告,但同時無需為所有這些增量文件增長付費。

畢竟,如果 tempdb 將增長以填充該空間,那麼您就不能將它用於其他任何事情。

我應該給自動增長哪個尺寸

沒有神奇的數字(傳統上預設值對於實際使用來說過於保守,但現在越來越好)。您的自動增長設置將基於磁碟的性能特徵以及您期望增長的頻率。如果您有 SSD 或類似設備,並啟用了 IFI,則大小可能與您在到達切片末尾之前想要發出的警告量更相關。如果您有旋轉驅動器、機械驅動器和/或未啟用 IFI,您可能需要測試各種設置並查看將文件增長不同數量所需的時間滿足您對系統上所有事務的容忍度等待。

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