DBA應該知道的一些SQL Server跟蹤標記

來源:互聯網
上載者:User
跟蹤標記是什嗎?

    對於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。

 

如何控制跟蹤標記

    控制跟蹤標記的方式有以下三種:

1.通過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就只能通過啟動參數指定。

 

2.通過在SQL Server組態管理員中指定

這種方式是通過在資料庫引擎啟動項裡加啟動參數設定,只有Global Scope。格式為-T#跟蹤標記1;T跟蹤標記2;T跟蹤標記3。

 

3.通過註冊表啟動

     這種方式和方法2大同小異,就不多說了。

 

一些在生產環境中可能需要的跟蹤標記

 

Trace Flag 610

減少日誌產生量。如果你對於日誌用了很多基礎的best practice,比如說只有一個記錄檔、VLF數量適當、單獨儲存,如果還是不能緩解日誌過大的話,考慮使用該跟蹤標記。

參考資料:

http://msdn.microsoft.com/en-us/library/dd425070.aspx

http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/10/24/new-update-on-minimal-logging-for-sql-server-2008.aspx

 

 

Trace Flag  834

使用 Microsoft Windows 大頁面緩衝池分配。如果伺服器是SQL Server專用伺服器的話,值得開啟該跟蹤標記。

 

Trace Flag  835

允許SQL Server 2005和2008標準版使用"鎖定記憶體頁",和在組策略中設定的結果大同小異,但是允許在標準版中使用.

 

Trace Flag  1118
tempdb分配整個區,而不是混合區,減少SGAM頁爭搶。
當apply tempdb的best practice之後,還遇到爭搶問題,考慮使用該跟蹤標記。
參考資料:

http://blogs.msdn.com/b/psssql/archive/2008/12/17/sql-server-2005-and-2008-trace-flag-1118-t1118-usage.aspx

 

Trace Flag  1204和1222
這兩個跟蹤標記都是將死結寫到錯誤記錄檔中,不過1204是以文字格式設定進行,而1222是以XML格式儲存。可以通過
sp_readerrorlog查看日誌
Trace Flag  1211和1224

兩種方式都是禁用鎖定擴大。但行為有所差別1211是無論何時都不會鎖定擴大,而1224在記憶體壓力大的時候會啟用鎖定擴大,從而避免了out-of-locks錯誤。當兩個跟蹤標記都啟用是,1211的優先順序更高。

 

Trace Flag  2528

禁用並存執行DBCC CHECKDB, DBCC CHECKFILEGROUP,DBCC CHECKTABLE。這意味著這幾個命令只能單線程執行,這可能會需要更多的時間,但是在某些特定情況下還是有些用處。

 

Trace Flag  3226   

防止日誌記錄成功的備份。如果記錄備份過於頻繁的話,會產生大量錯誤記錄檔,啟用該跟蹤標記可以使得記錄備份不再被記錄到錯誤記錄檔。

 

Trace Flag  4199
所有KB補丁對於查詢分析器行為的修改都生效,這個命令比較危險,可能掃稱效能的下降,具體請參看:
http://support.microsoft.com/kb/974006
 
 
不應該在生產環境中啟用的跟蹤標記
 
Trace Flag  806 
 
在讀取過程中對頁檢查邏輯一致性,在錯誤記錄檔中就可以看到類似下面的資訊:
 
2004-06-25 11:29:04.11 spid51 錯誤: 823,嚴重性: 24 日狀態: 2
2004-06-25 11:29:04.11 spid51 I/O 錯誤 (審核失敗) 在讀取過程中檢測到的位移量主題 SQL Server\MSSQL\data\pubs.mdf e:\Program 檔案中的 0x000000000b0000.
 
參考資料:http://support.microsoft.com/kb/841776
 
該跟蹤標記會極大的降低效能!!!

Trace Flag 818  
 
檢查寫一致性
蹤標誌 818 啟用了一個記憶體中的環形緩衝區,用於跟蹤由運行 SQL Server 的電腦執行的最後 2,048 個成功寫操作(不包括排序和工作檔案 I/O)。發生 605、823 或 3448 之類的錯誤時,將傳入緩衝區的記錄序號 (LSN) 值與最新寫入列表進行比較。如果在讀操作期間檢索到的 LSN 比在寫操作期間指定的更舊,就會在 SQL Server 錯誤記錄檔中記錄一條新的錯誤資訊。大部分 SQL Server 寫操作以檢查點或惰性寫入形式出現。惰性寫入是一項使用非同步 I/O 操作的背景工作。環形緩衝區的實現是輕量的,因此對系統效能的影響可以忽略。

參考資料:http://support.microsoft.com/kb/826433

Trace Flag 1200 
 
返回加鎖資訊的整個過程,是學習加鎖過程很牛逼的標誌,範例程式碼如下:
 
DBCC TRACEON(1200,-1)DBCC TRACEON(3604)DBCC TRACESTATUSSELECT * FROM AdventureWorks.person.Address
 
參考資料:
http://stackoverflow.com/questions/7449061/nolock-on-a-temp-table-in-sql-server-2008

Trace Flag 1806
 
禁用檔案立即初始化,所有的磁碟空間請求全部使用填0初始化,可能造成在空間增長時產生阻塞。
 
Trace Flag 3502
在日誌中顯示有關checkpoint的相關資訊。1所示。

圖1.在錯誤記錄檔中顯示Checkpoint

Trace Flag 3505
不允許自動進行checkpoint,checkpoint只能手動進行,是非常危險的一個命令。
 
 
小結

追蹤旗標是控制SQL Server行為的一種方式,對於某些追蹤旗標來說,可以在生產環境中提高效能,而對於另一些來說,用在生產環境中是一件非常危險的事情,只有在測試環境中才能被使用。要記住,跟蹤標記對於調優是一種劍走偏鋒的手段,只有在使用了所有基本的調優手段之後,才考慮使用跟蹤標記。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.