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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM