調整 SQL Server 預設檔案大小

  • 1489
  • 0

以下情境是提供給沒有DBA、不會調教資料庫只能攑香綴拜微軟預設值的開發人員……

SQL Server原本的資料庫檔案預設為
(資料是我挖公司的 SQL Server 來的,相信是沒有人動過它)

2014(12)
資料檔初始大小:5MB,自動成長1MB
記錄檔初始大小:2MB,自動成長10%
2012(11)
資料檔初始大小:5MB,自動成長1MB
記錄檔初始大小:1MB,自動成長10%
2008 R2(10.50)
資料檔初始大小:3MB,自動成長1MB
記錄檔初始大小:1MB,自動成長10%

從SQL Server 2016(13)開始[1]
資料和記錄檔大小的預設值改為8MB
自動成長的的大小預設值皆改為64MB

SQL Server 2016,2017,2019

SQL Server 2014 以前 

舊的自動成長預設值是10%,這會導致非線性增長和性能問題[1]
如果是從 2014 以前升級上來的資料庫預設值會保持舊的設定
可以修改系統資料庫裡面的 model 資料庫來改變新增資料庫的預設值
(這招似乎只適用於2016以後的版本,舊版的初始大小、自動成長好像不吃 model 資料庫的設定)

TempDB

舊版的 tempdb 的自動成長10%也可以改為64MB


從 2016 開始,安裝程式會自動偵測(邏輯)處理器開出對應檔案數目的 TempDB
(Express只會開一個,我猜測是因為它只能用一顆CPU)

次要資料檔案的數目取決於電腦上 (邏輯) 處理器的數目。 一般而言,如果邏輯處理器的數目小於或等於 8,請使用與邏輯處理器數目相同的資料檔案數目。 如果邏輯處理器的數目大於八,則使用八個資料檔案。 接著,如果競爭持續發生,請以四的倍數增加資料檔案數目,直到競爭縮減到可接受的程度,或對工作負載/程式碼進行變更為止。

我們可以用SSMS來加入檔案
記得確定有勾選所有檔案自動成長(SSMS 17.8.1以後才看得到這個選項)

參考資料:
[1] New defaults for model and user databases in SQL Server 2016
[2] SQL Server 2016 : Getting tempdb a little more right
[3] [SQL Server][安裝]Tempdb自動組態(SQL Server 2016)
[4] tempdb 資料庫