跟蹤標記是什麼?數據庫
對於DBA來講,掌握Trace Flag是一個成爲SQL Server高手的必要條件之一,在大多數狀況下,Trace Flag只是一個劍走偏鋒的奇招,沒必要要,但在不少狀況下,會使用這些標記可讓你更好的控制SQL Server的行爲。服務器
下面是官方對於Trace Flag的標記:測試
跟蹤標記是一個標記,用於啓用或禁用SQL Server的某些行爲。優化
由上面的定義不難看出,Trace Flag是一種用來控制SQL Server的行爲的方式。不少DBA對Trace Flag都存在一些誤區,認爲只有在測試和開發環境中才有可能用到Trace Flag,這種想法只能說部分正確,所以對於Trace Flag能夠分爲兩類,適合在生產環境中使用的和不適合在生產環境中使用的。日誌
Important:Trace Flag屬於劍走偏鋒的招數,在使用Trace Flag作優化以前,先Apply基本的Best Practice。開發
如何控制跟蹤標記io
控制跟蹤標記的方式有如下三種:基礎
一、經過DBCC命令配置
能夠經過DBCC命令來啓用或關閉跟蹤標記,這種方式的好處是簡單易用,分別使用下面三個命令來啓用,禁用已經查看跟蹤標記的狀態:方法
● DBCC TRACEON(2203,-1)
● DBCC TRACEOFF(2203,1)
● DBCC TRACESTATUS
其中,TRACEON和TRACEOFF第二個參數表明啓用標誌的範圍,1是Session Scope,-1是Global Scope,若是不指定該值,則保持默認值Session Scope。
另外,值得說的是,若是你但願在每次SQL Server服務啓動時經過DBCC命令控制某些Flag,則使用
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionName = ] 'startup'
, @OptionValue = 'on';
這個存儲過程來指定,sp_procoption存儲過程會在SQL Server服務器啓動時自動執行。
還有一點值得注意的是,不是全部的跟蹤標記均可以用DBCC命令啓動,好比Flag 835就只能經過啓動參數指定。
二、經過在SQL Server配置管理器中指定
這種方式是經過在數據庫引擎啓動項里加啓動參數設置,只有Global Scope。格式爲-T#跟蹤標記1;T跟蹤標記2;T跟蹤標記3。
三、經過註冊表啓動
這種方式和方法2大同小異,就很少說了。
一些在生產環境中可能須要的跟蹤標記
Trace Flag 610
減小日誌產生量。若是你對於日誌用了不少基礎的best practice,好比說只有一個日誌文件、VLF數量適當、單獨存儲,若是仍是不能緩解日誌過大的話,考慮使用該跟蹤標記。