Sql-Server

Tempdb 添加文件需要重啟

  • September 3, 2019

添加 Tempdb 文件是否需要重新啟動?我們想在同一個驅動器上添加文件,不刪除也不修改。我們在 Dev 和 QA 環境中進行了測試,不需要重新啟動。但是對於生產,我想確保一切正常。有些是陳述條件,並不總是必要的,有時是必要的,我正在閱讀以下資源:

ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = N'G:\tempdb2.ndf' , SIZE = 12288000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 0 )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = N'G:\tempdb3.ndf' , SIZE = 12288000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 0 

您需要中斷來添加 tempdb 文件嗎?Brent Ozar https://www.brentozar.com/blitz/tempdb-data-files/ “從技術上講,並非總是如此。但實際上,是的。如果您必須縮小文件,那麼在使用 SQL Server 時這是非常困難的,並且我們已經看到了在添加文件後重新啟動 SQL Server 之前防病毒/文件控制工具沒有起作用的情況。”

http://jackworthen.com/2017/08/24/adding-additional-data-files-to-the-tempdb-database-in-sql-server/ “一旦創建了附加文件,並不總是需要執行服務重啟。但是,在許多生產環境中,如果不先重啟服務,就無法簡單地修改現有 TempDB 數據文件 (tempdev) 的文件大小。"

以下資源說不需要重新啟動: https://www.codykonior.com/2015/08/10/modifying-tempdb-database-files-without-a-restart/ http://jackworthen.com/2017/08 /24/添加-附加-數據-文件到-the-tempdb-database-in-sql-server/

添加- 無需中斷。儘管正如 Microsoft 的 Sean 所指出的,SQL 更喜歡使用填充較低的文件。如果您從 1 個數據文件開始並添加更多,那麼 SQL 將使用新的一段時間,但您的性能不會比只有一個文件差。但是,如果您已經有 2 個以上並再添加一個,那麼它將成為新的熱點並降低性能。

SHRINK - 可能需要中斷,具體取決於負載。文件的尾部需要為空,這在繁忙的伺服器中可能不會發生。

GROW - 無需中斷,儘管您可能更願意使用一個來避免性能損失。即時文件初始化將緩解這種情況。正如 Aaron 指出的那樣,它只會減輕數據文件的影響,但是因為您不會添加多個日誌文件(沒用)

移除- 可能需要中斷(必須先縮小/清空)

MOVE - 需要中斷,因為您需要重新啟動 SQL 以使其開始使用新位置中的文件。

編輯- 添加了有關熱點的詳細資訊。

當 SQL Server 有多個 TempDB 數據文件時,它會查看它們並選擇數據量最少的一個來使用(負載平衡)。因此,在您有兩個或多個現有數據文件並添加一個新數據文件的情況下,SQL 將觀察到您剛剛添加的數據文件的填充率最低,並將幾乎完全使用該數據文件,直到它達到與其他數據文件相同的級別。這將抵消擁有多個 tempdb 文件的優勢,因為所有活動都將集中在一個上。基本上,您將看到剛剛添加的文件的 tempdb 爭用(Tempdb 上的 Pagelatch),直到達到平衡。

如果您有 1 個文件並向其添加 1 個或多個文件,那麼這仍然會發生(SQL 將更喜歡使用填充率最低的文件)但是當您從一個存在爭用的文件開始時,您不會看到任何下降性能,但在文件全部達到平衡之前,您不會看到任何性能提升。

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