SQLSERVER DBCC命令大全
DBCC DROPCLEANBUFFERS:從緩沖池中刪除所有緩存,清除緩沖區
在進行測試時,使用這個命令可以從SQLSERVER的數據緩存data cache(buffer)清除所有的測試數據,以保證測試的公正性。
需要注意的是這個命令只移走干凈的緩存,不移走臟緩存。由於這個原因,在執行這個命令前,應該先執行CheckPoint,將所有臟的緩存寫入磁盤,
這樣在運行DBCC RROPCLEANBUFFERS 時,可以保證所有的數據緩存被清理,而不是其中的一部分。
DBCC CacheStats:顯示存在於當前buffer Cache中的對象的信息,例如:hit rates,編譯的對象和執行計划
DBCC ErrorLog :如果很少重啟mssqlserver服務,那么服務器的日志(不是數據庫事務日志)會增長得很快,而且打開和查看日志的速度也會很慢
使用這個命令,可以截斷當前的服務器日志,主要是生成一個新的日志。可以考慮設置一個調度任務,每周執行這個命令自動截斷服務器日志。
使用存儲過程sp_cycle_errorlog也可以達到同樣的目的
一、DBCC 幫助類命令
DBCC HELP('?') :查詢所有的DBCC命令
DBCC HELP('命令') :查詢指定的DBCC命令的語法說明
DBCC USEROPTIONS :返回當前連接的活動(設置)的SET選項
二、DBCC 檢查驗證類命令
DBCC CHECKALLOC('數據庫名稱') :檢查指定數據庫的磁盤空間分配結構的一致性
DBCC CHECKCATALOG ('數據庫名稱') :檢查指定數據庫的系統表內和系統表間的一致性
DBCC CHECKCONSTRAINTS ('tablename') :檢查指定表上的指定約束或所有約束的完整性
DBCC CHECKDB :檢查數據庫中的所有對象的分配和結構完整性
DBCC CHECKFILEGROUP :檢查指定文件組中所有表在當前數據庫中的分配和結構完整性
DBCC CHECKTABLE :檢查指定表或索引視圖的數據、索引及test、ntest和image頁的完整性
DBCC CHECKIDENT :如果存在大量數據刪除,考慮在刪除后,使用 dbcc checkident 重置一下自增值
檢查指定的當前標識值
DBCC SQLPERF(UMSSTATS):最關鍵的一個參考數據num runnable:表明當前有多少個線程再等待運行,如果大於等於2,考慮CPU達到瓶頸
Scheduler ID:當前機器有多少個邏輯CPU就有多少個Scheduler ID,具體怎麽看可以看一下我的這篇文章
三、DBCC 維護類命令
DBCC CLEANTABLE ('db_name','table_name') :回收Alter table drop column語句刪除可變長度列或text
DBCC DBREINDEX :重建指定數據庫的一個或多個索引 跟ALTER INDEX REBUILD差不多
DBCC INDEXDEFRAG:對表或視圖上的索引和非聚集索引進行碎片整理
DBCC PINTABLE (db_id,object_id) :將表數據駐留在內存中
查看哪些表駐留在內存的方法是:0:沒有駐留 ,1:駐留
1 USE [GPOSDB] 2 GO 3 SELECT OBJECTPROPERTY(OBJECT_ID('dbo.SystemPara'), 'tableispinned')
DBCC UNPINTABLE (db_id,object_id) :撤消駐留在內存中的表
DBCC SHRINKDATABASE(db_id,int) :收縮指定數據庫的數據文件和日志文件大小
DBCC SHRINKFILE(file_name,int):收縮相關數據庫的指定數據文件和日志文件大小
四、DBCC 性能調節命令
DBCC dllname(FREE) :在內存中卸載指定的擴展過程動態鏈接庫(dll)
sp_helpextendedproc 查看加載的擴展PROC
DBCC DROPCLEANBUFFERS :從緩沖池中刪除所有緩沖區
DBCC FREEPROCCACHE :從執行計划緩沖區刪除所有緩存的執行計划
DBCC INPUTBUFFER :顯示從客戶機發送到服務器的最后一個語句
DBCC OPENTRAN (db_name) :查詢某個數據庫執行時間最久的事務,由哪個程序擁有
DBCC SHOW_STATISTICS :顯示指定表上的指定目標的當前統計信息分布
DBCC SHOWCONTIG :顯示指定表的數據和索引的碎片信息
DBCC SQLPERF (logspace) :查看各個DB的日志情況
(iostats) 查看IO情況
(threads) 查看線程消耗情況
返回多種有用的統計信息
DBCC CACHESTATS :顯示SQL Server 2000內存的統計信息
DBCC CURSORSTATS :顯示SQL Server 2000游標的統計信息
DBCC MEMORYSTATS :顯示SQL Server 2000內存是如何細分的
DBCC SQLMGRSTATS :顯示緩沖區中先讀和預讀准備的SQL語句
五、DBCC 未公開的命令
DBCC ERRLOG :初始化SQL Server 2000的錯誤日志文件
DBCC FLUSHPROCINDB (db_id) :清除SQL Server 2005服務器內存中的某個數據庫的存儲過程緩存內容
DBCC BUFFER (db_name,object_name,int(緩沖區個數)) :顯示緩沖區的頭部信息和頁面信息
DBCC DBINFO (db_name) :顯示數據庫的結構信息
DBCC DBTABLE :顯示管理數據的表(數據字典)信息
DBCC IND (db_name,table_name,index_id) :查看某個索引使用的頁面信息
DBCC REBUILDLOG :重建SQL Server 2000事務日志文件
DBCC LOG (db_name,3) (-1~4) :查看某個數據庫的事物日志信息 顯示格式可以為:-1,0,1,2,3,4 每個數字代表不同的格式
DBCC PAGE :查看某個數據庫數據頁面信息
DBCC PROCBUF :顯示過程緩沖池中的緩沖區頭和存儲過程頭
DBCC PRTIPAGE :查看某個索引頁面的每行指向的頁面號
DBCC PSS (user,spid,1) :顯示當前連接到SQL Server 2000服務器的進程信息
DBCC RESOURCE :顯示服務器當前使用的資源情況
DBCC TAB (db_id,object_id) :顯示數據頁面的結構
六、DBCC跟蹤標記
跟蹤標記用於臨時設置服務器的特定特征或關閉特定行為,常用於診斷性能問題或調試存儲過程或復雜的系統
DBCC TRACEON (3604) :打開跟蹤標記
DBCC TRACEOFF :關閉跟蹤標記
DBCC TRACESTATS :查看跟蹤標記狀態
七、官方使用DBCC的建議
1、在系統使用率較低時運行 CHECKDB。
2、請確保未同時執行其它磁盤 I/O 操作,例如磁盤備份。
3、將 tempdb 放到單獨的磁盤系統或快速磁盤子系統中。
4、允許 tempdb 在驅動器上有足夠的擴展空間。 使用帶有 ESTIMATE ONLY 的 DBCC 估計 tempdb 將需要多少空間。
5、避免運行占用大量 CPU 的查詢或批處理作業。
6、在 DBCC 命令運行時,減少活動事務。
7、使用 NO_INFOMSGS 選項減少一些信息的輸出。
8、考慮使用帶有 PHYSICAL_ONLY 選項的 DBCC CHECKDB 來檢查頁和記錄的物理結構。
PHYSICAL_ONLY 選項:只檢查物理錯誤,不檢查邏輯錯誤
物理錯誤比邏輯出更嚴重,因為物理錯誤一般SQLSERVER都不能修復的,而邏輯錯誤大部分SQLSERVER都可以修復
很困啊 要睡了~~