對於一套新的sqlserver伺服器,我們首先要對它做一些必要的優化配置,確保在生產上比較長的時間段內可以比較穩定的,良好的運行。 新的sqlserver伺服器上安裝的sqlserver版本,可以選擇sqlserver2014 企業版本,這個版本相對穩定了,相對也比較新的版本。 sqlserver配 ...
對於一套新的sqlserver伺服器,我們首先要對它做一些必要的優化配置,確保在生產上比較長的時間段內可以比較穩定的,良好的運行。
新的sqlserver伺服器上安裝的sqlserver版本,可以選擇sqlserver2014 企業版本,這個版本相對穩定了,相對也比較新的版本。
sqlserver配置優化:
1、最小,最大記憶體配置
最小記憶體一般設置1~2G,滿足最小運行的狀態的配置。
最大記憶體,這個一定要設置,一般如果是獨立的一個資料庫伺服器,規劃操作系統的記憶體使用資源,其他全部給到sqlserver,這個如果不
設置預設是伺服器的最大記憶體,如果出現一個峰值,正好突破伺服器的最大記憶體,那麼資料庫伺服器有宕機的可能性。
2、記憶體鎖定頁
關於記憶體鎖定頁的作用和配置的步驟,我們直接可以參考下官方文檔:
如果sqlserver伺服器是一個獨立的資料庫伺服器,這個配置不設置也沒問題
3、配置“對即時負載的優化”
SP_Configure 'show advanced options', 1
Reconfigure
GO
EXEC sp_configure 'optimize for ad hoc workloads',1
Reconfigure
當新查詢執行時,query_hash值會在記憶體中生成,而不是整個執行計劃,當相同的查詢第二次執行的時候,SQLServer會查找是否已經存在這個query_hash,如果不存在,執行計劃將保存在緩存中。這樣就使得僅執行一次的查詢將不會保存執行計划到緩存中。所以強烈建議打開這個配置。這個配置不造成任何負面影響,但是可以節省計劃緩存的空間
4、數據文件,日誌文件,tempdb文件分離
一般資料庫伺服器有多個物理磁碟,可以將數據文件,日誌文件,tempdb文件分散到不同的磁碟上去,從而增加I/O能力。
特別對於tempdb文件,儘量放在性能比較高的磁碟上
5、索引文件,數據文件分離
預設索引文件,數據文件是放在同一個數據文件組的,可以分成不同的文件組,從而實現索引文件與數據文件分離,索引文件可以放在
性能比較高的磁碟上,這樣對查詢效率會有比較好的提高。這個根據實際情況來做,因為這個需要把原有的索引全部重新建立一遍。
6、日誌文件
日誌文件的管理,大家可以看下官方文檔 管理事務日誌的大小
日誌文件要根據實際的生產上的增長情況,設定初始大小和增長的大小,如果是資料庫遷移,可以根據正在運行的生產環境的情況,
來設定日誌文件的初始大小,增加的方式與大小
可以根據 建議腳本 來設定。
7、tempdb文件
tmpdb是比較重要的,臨時表,建立索引,資料庫運行中的中間變數都會用到tempdb
tempdb的文件建立個數,要按照實際的生產環境情況來定,下麵有個參照表:
基於 DTU 的服務層的 tempdb 大小
SLO | 最大 tempdb 數據文件大小 (MB) | tempdb 數據文件數 | 最大 tempdb 數據大小 (MB) |
---|---|---|---|
“基本” | 14,225 | @shouldalert | 14,225 |
S0 | 14,225 | @shouldalert | 14,225 |
S1 | 14,225 | @shouldalert | 14,225 |
S2 | 14,225 | @shouldalert | 14,225 |
S3 | 32,768 | @shouldalert | 32,768 |
S4 | 32,768 | 2 | 65,536 |
S6 | 32,768 | 3 | 98,304 |
S7 | 32,768 | 6 | 196,608 |
S9 | 32,768 | 12 | 393,216 |
S12 | 32,768 | 12 | 393,216 |
P1 | 32,768 | 12 | 393,216 |
P2 | 32,768 | 12 | 393,216 |
P4 | 32,768 | 12 | 393,216 |
P6 | 32,768 | 12 | 393,216 |
P11 | 32,768 | 12 | 393,216 |
P15 | 32,768 | 12 | 393,216 |
高級彈性池(所有 DTU 配置) | 14,225 | 12 | 170,700 |
標準彈性池(所有 DTU 配置) | 14,225 | 12 | 170,700 |
基本彈性池(所有 DTU 配置) | 14,225 | 12 | 170,700 |
DTU是一個資源度量單位,詳細可以參考 這個文章 DTU和eTUD
一般可以先嘗試建8個對應的tempdb的文件。
下麵的腳本可以查詢當前tempdb的大小和增長參數,遷移數據的時候,可以根據下麵的腳本查詢,來設定
新的資料庫的tempdb的初始大小,和增長的大小
SELECTnameAS FileName,
size*1.0/128AS FileSizeinMB, CASE max_size WHEN0THEN'Autogrowth is off.'WHEN-1THEN'Autogrowth is on.'ELSE'Log file grows to a maximum size of 2 TB.'END, growth AS'GrowthValue', 'GrowthIncrement' = CASEWHEN growth = 0THEN'Size is fixed.'WHEN growth > 0AND is_percent_growth = 0THEN'Growth value is in 8-KB pages.'ELSE'Growth value is a percentage.'ENDFROM tempdb.sys.database_files; GO
8、建立自動化維護job
可以建立一些日常的自動化維護job,比如自動清理索引碎片,自動更新索引統計信息等等
這些可以參考一些其他sqlserver管理方面的資料,不再詳細敘述.
9、其他
sqlserver裡面還有很多其他一些配置項,比如cpu的使用個數,並行度設置,索引創建時的記憶體等等。
可以通過查詢sys.configurations
查詢所有的sqlserver的配置項,一般這些配置項可以先按預設值,根據生產中的實際情況再調整.