一些有用但文档中没有介绍的sql server DBCC命令

翻译 2006年06月22日 15:43:00
一些有用但文档中没有介绍的sql server DBCC命令
 
以下是一些sql server的DBCC命令,可以在优化 sql server时使用。
 
1. DBCC CacheStats :显示存在于当前 buffer Cache 中的对象的信息,例如 :hit rates,编译的对象和执行计划
例:
DBCC CACHESTATS
执行结果(缩略)
Object Name       Hit Ratio
------------      -------------
Proc              0.86420054765378507
Prepared          0.99988494930394334
Adhoc             0.93237136647793051
ReplProc          0.0
Trigger           0.99843452831887947
Cursor            0.42319205924058612
Exec Cxt          0.65279111666076906
View              0.95740334726893905
Default           0.60895011346896522
UsrTab            0.94985969576133511
SysTab            0.0
Check             0.67021276595744683
Rule              0.0
Summary           0.80056155581812771
从这个命令可以得到一些关键的统计信息:
l         Hit Ratio显示特定对象可以在sql server的缓存中被命中的百分比,这个数值越大,越好
l         Object Count显示特定类型的对象在sql server的缓存中被命中的总数
l         Avg.Cost:sql server用于测量编译一个执行计划所需的时间,以及这个计划所需的内存。根据这个值,可以决定执行计划是否应该加载在缓存中。
l         Avg.Pages:测量在缓存中的对象使用8K页的平均总数
l         LW Ojbect Count,LW Avg Cost,WL Avg Stay,LW Ave Use:这些列的值表明有多少特定的对象已经被写进程从缓存总移走。这些数值越低,越好。
 
2.DBCC DROPCLEANBUFFERS:从缓冲池中删除所有,清除缓冲区。在进行测试时,使用这个命令可以从sql server’s的数据缓存data cache(buffer)清除所有的测试数据,以保证测试的公正性。需要注意的是这个命令只移走干净的缓存,不移走脏缓存。由于这个原因,在执行这个命令前,应该先执行CheckPoint,将所有脏的缓存写入磁盘,这样在运行DBCC RROPCLEANBUFFERS 时,可以保证所有的数据缓存被清理,而不是其中的一部分。
 
3.DBCC ErrorLog :如果很少重起mssqlserver服务,那么服务器的日志会增长得很快,而且打开和查看日志的速度也会很慢。使用这个命令,可以截断当前的服务器日志,主要是生成一个新的日志。可以考虑设置一个调度任务,每周执行这个命令自动截断服务器日志。使用存储过程sp_cycle_errorlog也可以达到同样的目的。
 
4DBCC FLUSHPROCINDB:用于清理一个数据库实例中指定数据库的存储过程使用的缓存。数据库的ID是必输参数。
在测试时保证以前的存储过程计划不会对测试结果造成负面影响,可以使用这个存储过程。
例子:
DECLARE @intDBID INTEGER SET @intDBID = (SELECT dbid FROM master.dbo.sysdatabases WHERE name = 'database_name')
DBCC FLUSHPROCINDB (@intDBID)
 
5.DBCC FREEPROCCACHE用于清理所有数据库的过程高速缓存。例如,释放过程高速缓存将导致重新编译某些部分(例如特别 SQL 语句),而不是从高速缓存中对其再使用。
 
6.DBCC MEMORYSTATUS列出一个详细分类,分类中显示sql server缓存如何分配,包括缓存的活动。
 
7.DBCC PAGE用于查看sql server 中一个数据页的内容
例:
DBCC PAGE((dbid|dbname),pagenum [,Print Option][,cache][,logical])
参数说明:
Dbid or dbname :可以是数据库ID或数据库名。
PageNum:要检查的页号
Print option:(可选)打印选项的值是:0,1,2。
       0-(缺省)显示页的头信息
       1- 显示页的头信息,页中每行的信息以及页的偏移表。逐行显示页中的行。
       2- 与选项1相同,除了不是逐行显示页行,而是显示一个单个的信息块。
Cache:(可选)该参数的值是1或0,
0-      命令直接从磁盘查找页号而不是检查页号是否在高速缓存中DBCC PAGE
1-      若页在高速缓存中,优先从高速缓存中获取页,而不是直接从磁盘中获取页
Logical:(可选)该参数用于页号是从虚拟页中获取还是逻辑页中获取。这个参数的值可以是1或0,
0-      一个虚拟页号
1-      一个逻辑页号
 
8.DBCC SQLMGRSTATS用于产生3个不同的值,这些值用在你想查看高速缓存在ad-hoc和预编译的TSQL语句中是如何工作的。
例:
       DBCC SQLMGRSTATS
结果:
Item                      Status
------------------------- -----------
Memory Used (8k Pages)    5446
Number CSql Objects       29098
Number False Hits         425490
其中:
l         Memor Used(8K Pages):若内存页的数量非常大,这也许是个提示:表明一些用户连接正在预处理许多TSQL语句。
l         Number CSql Objects:表明已经在高速缓存中的TSQL的语句的总数
l         Number False Hits:有时,当sql server在匹配在高速缓存中已经存在的TSQL语句时会出现错误的命中。在理想的情况下,这个数字应该尽可能地小。
 
8.DBCC SQLPERF():这个命令包括了那些有文档说明和没有说明的选项。
 
DBCC SQLPERF ( LOGSPACE )
提供有关所有数据库中的事务日志空间使用情况的统计信息。具体说明可参考联机帮助。
 
DBCC SQLPERF(UMSSTATS):提供有关sql server 线程管理情况的统计信息
运行这个命令,结果如下:
Statistic                        Value                   
-------------------------------- ------------------------
Scheduler ID                     0.0
 num users                      17.0
 num runnable                   0.0
 num workers                    13.0
 idle workers                   6.0
 work queued                    0.0
 cntxt switches                 76752.0
 cntxt switches(idle)           47139.0
Scheduler Switches               0.0
Total Work                       54056.0
 
以下是一些关键统计信息的解释:
l         Scheduler ID:每个CPU对应一个调度程序,这是调度程序的序号
l         Num user:目前在调度队列中的SQL Server线程数目
l         Num runnable: 目前正在运行的SQL Server线程数目
l         Num Workers:线程池的大小
l         Idle workers:正在空闲的workers。
l         Cntxt switches:在可执行的线程之间交换上下文的数目
 
DBCC SQLPERF(WAITSTATS):提供有关sql server read-ahead activity的信息
DBCC SQLOERFIOSTATS):提供主要的SQL server读和写的信息
DBCC SQLPERFRASTATS):提供SQL server read-ahead 活动的信息
DBCC SQLPERF THREADS):提供每个sql server线程I/OCPU及内存使用情况的信息。

Sql Server中的DBCC命令详细介绍

一:DBCC 1:什么是DBCC   我不是教学老师,我也说不到没有任何无懈可击的定义,全名:Database Console Commands。顾名思义“数据库控制台命令”,说到“控制台“,我第一反...
  • snowfoxmonitor
  • snowfoxmonitor
  • 2015年11月22日 13:33
  • 1202

详解SQL Server数据修复命令DBCC的使用

MS Sql Server 提供了很多关于数据库修复的命令,当MS Sql Server 数据库遭到质疑或者是有的无法完成读取时可以尝试这些修复命令。   1. DBCC CHECKDB   重启...
  • zeb_perfect
  • zeb_perfect
  • 2015年11月25日 11:35
  • 2166

文档中没有介绍的SQL Server DBCC命令

文档中没有介绍的SQL Server DBCC命令 http://www.searchdatabase.com.cn/showcontent_11822.htm http:...
  • miyatang
  • miyatang
  • 2012年10月23日 13:14
  • 806

DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息

DBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息。查询优化器使用统计信息估计查询结果中的基数或行数,这样,查询优化器可以创建高质量的查询计划。例如,查询优化器可以使用基...
  • luoyanqing119
  • luoyanqing119
  • 2014年01月03日 11:54
  • 1166

一些很有用的BAT命令[不断收集中..]

获取当前盘符: echo %~d0获取当前路径:echo %cd%获取BAT本身的完整路径和文件名:echo %0当前bat文件路径: echo %~dp0当前bat文件短路径:echo %~sdp0...
  • cn_ldx
  • cn_ldx
  • 2010年06月26日 23:47
  • 1719

SQL SERVER 中的dbcc inputbuffer

想用一个触发器来记录用户对表的更新情况在csdn上吭到了一个利用dbcc inputbuffer来记录当前使用的sql语句可是没想到,记录的sql只有256个字符于是查看sql帮助看到了如下内容DBC...
  • yiyioo
  • yiyioo
  • 2006年04月04日 08:46
  • 6063

如何将 DBCC INDEXDEFRAG 执行的结果插入到表中

如何将 DBCC INDEXDEFRAG 执行的结果插入到表中 欲将 DBCC INDEXDEFRAG 执行的结果插入到表中,收到如下错误信息"用户事务下无法对dbcc indexdefrag的结果操...
  • zjcxc
  • zjcxc
  • 2005年08月24日 13:25
  • 3824

DBCC命令汇总

引用了链接:http://bbs.chinaunix.net/thread-2315221-1-1.html   IF (OBJECT_ID('#tmpDBCC04') IS NOT NULL) ...
  • yupeigu
  • yupeigu
  • 2013年01月04日 17:18
  • 2825

虚拟日志文件剖析(DBCC LOGINFO )

每一个数据库至少有一个日志文件,无论为事务日志定义多个少物理文件,SQL Server均视为一个连续的文件。该事务日志文件实际上由一系列的虚拟日志文件VLF来管理。虚拟日志文件的大小由SQL Serv...
  • BulkInsert
  • BulkInsert
  • 2011年12月05日 12:16
  • 2447

DBCC FREEPROCCACHE

SQL Server 2008 R2SQL Server 2008SQL Server 2005 此主题尚未评级 - 评价此主题 删除计划缓存中的所有元素,通过指定计划句...
  • tianlianchao1982
  • tianlianchao1982
  • 2012年05月23日 10:08
  • 1208
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一些有用但文档中没有介绍的sql server DBCC命令
举报原因:
原因补充:

(最多只允许输入30个字)