對於一套新的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的配置項,一般這些配置項可以先按默認值,根據生產中的實際情況再調整.
