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

来源:http://www.cnblogs.com/shouce/archive/2016/06/06/5562693.html
-Advertisement-
Play Games

跟蹤標記是什麼? 對於DBA來說,掌握Trace Flag是一個成為SQL Server高手的必要條件之一,在大多數情況下,Trace Flag只是一個劍走偏鋒的奇招,不必要,但在很多情況下,會使用這些標記可以讓你更好的控制SQL Server的行為。 下麵是官方對於Trace Flag的標記: 跟 ...


跟蹤標記是什麼?

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

SELECT * 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所示。
2013-04-23_233140
圖1.在錯誤日誌中顯示Checkpoint

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

小結

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近把四大組件,網路編程,以及一些常用的控制項都學完了,不過感覺還不是特別牢固,所以決定再花一點時間重新過一遍,你們有這樣的感覺嗎? ...
  • 前言: 受颱風影響今天學校不上課,在家閑的蛋疼沒事做,使用Mac系統一段時間了發現它和Windows系統的操作風格還是有很大不同的,遂決定將Mac系統與Xcode的一些常用操作收集整理一下,方便自己日後查找使用。 一、Mac系統(OS X 10.10以上版本)操作篇 1)F11 開啟多個程式時可快速 ...
  • 程式執行需要讀取到安全敏感項必需在androidmanifest.xml中聲明相關許可權請求, 完整列表如下:android.permission.ACCESS_CHECKIN_PROPERTIES允許讀寫訪問”properties”表在 checkin資料庫中,改值可以修改上傳( Allows re ...
  • OC 類簇與複合 類簇: 類簇是Foundation框架中廣泛使用的設計模式。類簇將一些私有的、具體的子類組合在一個公共的、抽象的超類下麵,以這種方法來組織類可以簡化一個面向對象框架的公開架構,而又不減少功能的豐富性。 簡單的來說,NSString是個“工廠類”,然後它在外層提供了很多方法介面,但是 ...
  • 當用戶需要訪問資料庫時,在客戶端要建立一個用戶進程-在伺服器端,需要為用戶進程分配一個伺服器進程,兩個進程之間建立連接,伺服器進程處理用戶進程的請求。客戶端應用程式可以是SQL*Plus 、EM 、RMAN ,或者用戶自己,開發的Java應用程式。用戶進程必須通過伺服器進程才能訪問資料庫實例。伺服器 ...
  • 1. 首先,當然是下載 MongoDBMongoDB的官方網站是:http://www.mongodb.org/,最新版本下載在:http://www.mongodb.org/downloads 。請註意下載適合自己系統的安裝包,我選擇的是:Windows 64-bit 2008 R2+。下載後的文 ...
  • mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql備份MySQL資料庫為帶刪除表的格式備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。 mysqldump -–a ...
  • 思路: 通過一個流水號表,記錄當前最大的流水號,以便下次取用。每次取號時,將流水號表更新成大的。 涉及的表: 流水號表hp_no: 欄位 類型 TYPE_NAME VARCHAR2(100) START_NO VARCHAR2(100) CURRENT_NO VARCHAR2(100) 代碼: 1) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...