SQL SERVER DBCC命令詳解
瀏覽量: 次 發(fā)布日期:2023-08-17 21:49:20
sql server DBCC命令詳解
點(diǎn)擊上方SQL數(shù)據(jù)庫(kù)開發(fā),關(guān)注獲取SQL視頻教程
SQL專欄
SQL基礎(chǔ)知識(shí)匯總
SQL高級(jí)知識(shí)匯總
DBCC DROPCLEANBUFFERS:從緩沖池中刪除所有緩存,清除緩沖區(qū)
在進(jìn)行測(cè)試時(shí),使用這個(gè)命令可以從SQLSERVER的數(shù)據(jù)緩存data cache(buffer)清除所有的測(cè)試數(shù)據(jù),以保證測(cè)試的公正性。
需要注意的是這個(gè)命令只移走干凈的緩存,不移走臟緩存。由于這個(gè)原因,在執(zhí)行這個(gè)命令前,應(yīng)該先執(zhí)行CheckPoint,將所有臟的緩存寫入磁盤,
這樣在運(yùn)行DBCC RROPCLEANBUFFERS 時(shí),可以保證所有的數(shù)據(jù)緩存被清理,而不是其中的一部分。
DBCC CacheStats:顯示存在于當(dāng)前buffer Cache中的對(duì)象的信息,例如:hit rates,編譯的對(duì)象和執(zhí)行計(jì)劃
DBCC ErrorLog :如果很少重啟mssqlserver服務(wù),那么服務(wù)器的日志(不是數(shù)據(jù)庫(kù)事務(wù)日志)會(huì)增長(zhǎng)得很快,而且打開和查看日志的速度也會(huì)很慢
使用這個(gè)命令,可以截?cái)喈?dāng)前的服務(wù)器日志,主要是生成一個(gè)新的日志。可以考慮設(shè)置一個(gè)調(diào)度任務(wù),每周執(zhí)行這個(gè)命令自動(dòng)截?cái)喾?wù)器日志。
使用存儲(chǔ)過(guò)程sp_cycle_errorlog也可以達(dá)到同樣的目的
一、DBCC 幫助類命令
DBCC HELP('?') :查詢所有的DBCC命令
DBCC HELP('命令') :查詢指定的DBCC命令的語(yǔ)法說(shuō)明
DBCC USEROPTIONS :返回當(dāng)前連接的活動(dòng)(設(shè)置)的SET選項(xiàng)
二、DBCC 檢查驗(yàn)證類命令
DBCC CHECKALLOC('數(shù)據(jù)庫(kù)名稱') :檢查指定數(shù)據(jù)庫(kù)的磁盤空間分配結(jié)構(gòu)的一致性
DBCC CHECKCATALOG ('數(shù)據(jù)庫(kù)名稱') :檢查指定數(shù)據(jù)庫(kù)的系統(tǒng)表內(nèi)和系統(tǒng)表間的一致性
DBCC CHECKCONSTRAINTS ('tablename') :檢查指定表上的指定約束或所有約束的完整性
DBCC CHECKDB :檢查數(shù)據(jù)庫(kù)中的所有對(duì)象的分配和結(jié)構(gòu)完整性
DBCC CHECKFILEGROUP :檢查指定文件組中所有表在當(dāng)前數(shù)據(jù)庫(kù)中的分配和結(jié)構(gòu)完整性
DBCC CHECKTABLE :檢查指定表或索引視圖的數(shù)據(jù)、索引及test、ntest和image頁(yè)的完整性
DBCC CHECKIDENT :如果存在大量數(shù)據(jù)刪除,考慮在刪除后,使用 dbcc checkident 重置一下自增值
檢查指定的當(dāng)前標(biāo)識(shí)值
DBCC SQLPERF(UMSSTATS):最關(guān)鍵的一個(gè)參考數(shù)據(jù)num runnable:表明當(dāng)前有多少個(gè)線程再等待運(yùn)行,如果大于等于2,考慮CPU達(dá)到瓶頸
Scheduler ID:當(dāng)前機(jī)器有多少個(gè)邏輯CPU就有多少個(gè)Scheduler ID
三、DBCC 維護(hù)類命令
DBCC CLEANTABLE ('db_name','table_name') :回收Alter table drop column語(yǔ)句刪除可變長(zhǎng)度列或text
DBCC DBREINDEX :重建指定數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)索引 跟ALTER INDEX REBUILD差不多
DBCC INDEXDEFRAG:對(duì)表或視圖上的索引和非聚集索引進(jìn)行碎片整理
DBCC PINTABLE (db_id,object_id) :將表數(shù)據(jù)駐留在內(nèi)存中
查看哪些表駐留在內(nèi)存的方法是:0:沒有駐留 ,1:駐留
1 USE [GPOSDB]2 GO3 SELECT OBJECTPROPERTY(OBJECT_ID('dbo.SystemPara'), 'tableispinned')
DBCC UNPINTABLE (db_id,object_id) :撤消駐留在內(nèi)存中的表
DBCC SHRINKDATABASE(db_id,int) :收縮指定數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和日志文件大小
DBCC SHRINKFILE(file_name,int):收縮相關(guān)數(shù)據(jù)庫(kù)的指定數(shù)據(jù)文件和日志文件大小
四、DBCC 性能調(diào)節(jié)命令
DBCC dllname(FREE) :在內(nèi)存中卸載指定的擴(kuò)展過(guò)程動(dòng)態(tài)鏈接庫(kù)(dll)
sp_helpextendedproc 查看加載的擴(kuò)展PROC
DBCC DROPCLEANBUFFERS :從緩沖池中刪除所有緩沖區(qū)
DBCC FREEPROCCACHE :從執(zhí)行計(jì)劃緩沖區(qū)刪除所有緩存的執(zhí)行計(jì)劃
DBCC INPUTBUFFER :顯示從客戶機(jī)發(fā)送到服務(wù)器的最后一個(gè)語(yǔ)句
DBCC OPENTRAN (db_name) :查詢某個(gè)數(shù)據(jù)庫(kù)執(zhí)行時(shí)間最久的事務(wù),由哪個(gè)程序擁有
DBCC SHOW_STATISTICS :顯示指定表上的指定目標(biāo)的當(dāng)前統(tǒng)計(jì)信息分布
DBCC SHOWCONTIG :顯示指定表的數(shù)據(jù)和索引的碎片信息
DBCC SQLPERF (logspace) :查看各個(gè)DB的日志情況
(iostats) 查看IO情況
(threads) 查看線程消耗情況
返回多種有用的統(tǒng)計(jì)信息
DBCC CACHESTATS :顯示SQL Server 2000內(nèi)存的統(tǒng)計(jì)信息
DBCC CURSORSTATS :顯示SQL Server 2000游標(biāo)的統(tǒng)計(jì)信息
DBCC MEMORYSTATS :顯示SQL Server 2000內(nèi)存是如何細(xì)分的
DBCC SQLMGRSTATS :顯示緩沖區(qū)中先讀和預(yù)讀準(zhǔn)備的SQL語(yǔ)句
五、DBCC 未公開的命令
DBCC ERRLOG :初始化SQL Server 2000的錯(cuò)誤日志文件
DBCC FLUSHPROCINDB (db_id) :清除SQL Server 2005服務(wù)器內(nèi)存中的某個(gè)數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程緩存內(nèi)容
DBCC BUFFER (db_name,object_name,int(緩沖區(qū)個(gè)數(shù))) :顯示緩沖區(qū)的頭部信息和頁(yè)面信息
DBCC DBINFO (db_name) :顯示數(shù)據(jù)庫(kù)的結(jié)構(gòu)信息
DBCC DBTABLE :顯示管理數(shù)據(jù)的表(數(shù)據(jù)字典)信息
DBCC IND (db_name,table_name,index_id) :查看某個(gè)索引使用的頁(yè)面信息
DBCC REBUILDLOG :重建SQL Server 2000事務(wù)日志文件
DBCC LOG (db_name,3) (-1~4) :查看某個(gè)數(shù)據(jù)庫(kù)的事物日志信息 顯示格式可以為:-1,0,1,2,3,4 每個(gè)數(shù)字代表不同的格式
DBCC PAGE :查看某個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)頁(yè)面信息
DBCC PROCBUF :顯示過(guò)程緩沖池中的緩沖區(qū)頭和存儲(chǔ)過(guò)程頭
DBCC PRTIPAGE :查看某個(gè)索引頁(yè)面的每行指向的頁(yè)面號(hào)
DBCC PSS (user,spid,1) :顯示當(dāng)前連接到SQL Server 2000服務(wù)器的進(jìn)程信息
DBCC RESOURCE :顯示服務(wù)器當(dāng)前使用的資源情況
DBCC TAB (db_id,object_id) :顯示數(shù)據(jù)頁(yè)面的結(jié)構(gòu)
六、DBCC跟蹤標(biāo)記
跟蹤標(biāo)記用于臨時(shí)設(shè)置服務(wù)器的特定特征或關(guān)閉特定行為,常用于診斷性能問(wèn)題或調(diào)試存儲(chǔ)過(guò)程或復(fù)雜的系統(tǒng)
DBCC TRACEON (3604) :打開跟蹤標(biāo)記
DBCC TRACEOFF :關(guān)閉跟蹤標(biāo)記
DBCC TRACESTATS :查看跟蹤標(biāo)記狀態(tài)
七、官方使用DBCC的建議
1、在系統(tǒng)使用率較低時(shí)運(yùn)行 CHECKDB。
2、請(qǐng)確保未同時(shí)執(zhí)行其它磁盤 I/O 操作,例如磁盤備份。
3、將 tempdb 放到單獨(dú)的磁盤系統(tǒng)或快速磁盤子系統(tǒng)中。
4、允許 tempdb 在驅(qū)動(dòng)器上有足夠的擴(kuò)展空間。 使用帶有 ESTIMATE ONLY 的 DBCC 估計(jì) tempdb 將需要多少空間。
5、避免運(yùn)行占用大量 CPU 的查詢或批處理作業(yè)。
6、在 DBCC 命令運(yùn)行時(shí),減少活動(dòng)事務(wù)。
7、使用 NO_INFOMSGS 選項(xiàng)減少一些信息的輸出。
8、考慮使用帶有 PHYSICAL_ONLY 選項(xiàng)的 DBCC CHECKDB 來(lái)檢查頁(yè)和記錄的物理結(jié)構(gòu)。
PHYSICAL_ONLY 選項(xiàng):只檢查物理錯(cuò)誤,不檢查邏輯錯(cuò)誤
物理錯(cuò)誤比邏輯出更嚴(yán)重,因?yàn)槲锢礤e(cuò)誤一般SQLSERVER都不能修復(fù)的,而邏輯錯(cuò)誤大部分SQLSERVER都可以修復(fù)
擴(kuò)展閱讀
教你如何定位及優(yōu)化SQL語(yǔ)句的性能問(wèn)題
MySQL 分庫(kù)分表方案總結(jié)
公眾號(hào)內(nèi)回復(fù)‘Key’獲取關(guān)鍵字列表
QQ交流加群:875156894
長(zhǎng)按識(shí)別二維碼,更多精彩早知道!
南京兆柏數(shù)據(jù)恢復(fù)中心 南京兆柏?cái)?shù)據(jù)恢復(fù)中心 南京兆柏?cái)?shù)據(jù)恢復(fù)中心
. 數(shù)據(jù)庫(kù)恢復(fù)掛起怎么辦,SQL Server數(shù)據(jù)庫(kù)恢復(fù)掛起怎么辦?全面解析及解決方法
. sqlserver可疑數(shù)據(jù)庫(kù)恢復(fù),SQL Server 可疑數(shù)據(jù)庫(kù)恢復(fù)全攻略
. sqlserver2008數(shù)據(jù)庫(kù)可疑,SQL Server 2008數(shù)據(jù)庫(kù)可疑狀態(tài)解
. 數(shù)據(jù)庫(kù)的恢復(fù)模式有哪些,SQL Server數(shù)據(jù)庫(kù)的恢復(fù)模式詳解
. SQL Server 恢復(fù)掛起狀態(tài),原因、診斷與解決方法
. sqlserver備份到其他服務(wù)器,SQL Server數(shù)據(jù)庫(kù)備份到其他服務(wù)器的實(shí)用
. 2008數(shù)據(jù)庫(kù)怎么還原數(shù)據(jù)庫(kù),SQL Server 2008 數(shù)據(jù)庫(kù)還原指南
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)掛起狀態(tài),什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)掛起狀態(tài)?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)50g大約多少時(shí)間,了解SQL Server數(shù)據(jù)庫(kù)恢復(fù)
. sql server數(shù)據(jù)庫(kù)顯示恢復(fù)掛起,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)掛起?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)進(jìn)度,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)進(jìn)度?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)步驟,SQL Server數(shù)據(jù)庫(kù)恢復(fù)步驟
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù),什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù),什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)掛起什么導(dǎo)致的,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)掛起
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)掛起,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)掛起?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)工具,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)工具?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)模式,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)模式?
. sqlserver數(shù)據(jù)庫(kù)恢復(fù)掛起怎么解決,什么是SQL Server數(shù)據(jù)庫(kù)恢復(fù)掛起?