https://developer.aliyun.com/article/867768
 
简介: SQL数据库开发

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 GO3 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都可以修复

[转帖]SQL SERVER DBCC命令详解的更多相关文章

  1. [转帖]SQL Server DBCC命令大全

    SQL Server DBCC命令大全   原文出处:https://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html DBCC DROPC ...

  2. SQL Server表分区详解

    原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...

  3. MS SQL Server 数据库连接字符串详解

    MS SQL Server 数据库连接字符串详解 原地址:http://blog.csdn.net/jhhja/article/details/6096565 问题 : 超时时间已到.在从池中获取连接 ...

  4. [转帖]Linux的wget命令详解

    Linux的wget命令详解 来源不明 找到的也是转帖的 https://www.cnblogs.com/cindy-cindy/p/6847502.html Linux wget是一个下载文件的工具 ...

  5. [转帖]Linux:cut命令详解

    Linux:cut命令详解 https://www.cnblogs.com/Spiro-K/p/6361646.html cut -f cut -f -d cut -c1- 这三个命令好像最常见, 记 ...

  6. sql server 存储过程的详解

    SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...

  7. SQL server T-SQL索引详解

    SQL索引在数据库优化中占有一个非常大的比例,一个好的索引的设计,可以让sql语句查询效率提高很多被. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引,索引的主要目的是提高T-SQL系统 ...

  8. SQL Server DBCC命令大全

    原文出处:https://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html DBCC DROPCLEANBUFFERS:从缓冲池中删除所有缓 ...

  9. SQL中EXPLAIN命令详解---(转)

    MySQL Explain详解   在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQ ...

  10. JDBC连接SQL Server 2005步骤详解

    一.设置SQL Server服务器:    1.“开始” → “程序” → “Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configurati ...

随机推荐

  1. 报错信息如下:出现身份验证错误。要求的函数不受支持。可能是由于CredSSP加密数据库修正。

    微软官方已出补丁包:CVE-2018-0886 的 CredSSP 更新 Windows Server 2016, all editions.Windows Server 2012 R2 Standa ...

  2. 神经网络优化篇:详解梯度检验(Gradient checking)

    梯度检验 梯度检验帮节省了很多时间,也多次帮发现backprop实施过程中的bug,接下来,看看如何利用它来调试或检验backprop的实施是否正确. 假设的网络中含有下列参数,\(W^{[1]}\) ...

  3. C语言使用dlfcn动态载入.so动态库

    转载:https://mp.weixin.qq.com/s?__biz=Mzk0NDYzNTI1Ng==&mid=2247483722&idx=1&sn=09a9458b012 ...

  4. .net Core实战简单文件服务器

    首先新建一个ASP.NET Core 项目,选中空的模板,如下图所示 在NuGet包中添加Microsoft.AspNetCore.StaticFiles 添加好以后我们在Startup.cs中添加对 ...

  5. bash命令的使用

    bash的工作特性之命令执行状态返回值和命令展开所涉及的内容及其示例演出 !脚本执行与调试 1.绝对路径执行,要求文件有执行权限 2.以sh命令执行,不要求文件有执行权限 3..加空格或source命 ...

  6. C# 多线程 progressbar 界面不卡顿简单用法

    多线程进度条的简单使用,界面不卡顿.如下图: 简单源码如下: using System; using System.Collections.Generic; using System.Componen ...

  7. maven系列:依赖管理和依赖范围

    目录 一.依赖管理 使用坐标导入jar包 使用坐标导入 jar 包 – 快捷方式 使用坐标导入 jar 包 – 自动导入 二.依赖范围 三.可选依赖 四.排除依赖 一.依赖管理 使用坐标导入jar包 ...

  8. 重磅更新!Sermant 1.2.0 release版本新特性速览

    本文分享自华为云社区<重磅更新!Sermant 1.2.0 release版本新特性速览>,作者:华为云开源. 10月,Sermant社区正式发布了1.2.0 release版本,距离上一 ...

  9. 盘点Python 中字符串的常用操作

    摘要:盘点 Python 中字符串的几个常用操作,对新手极度的友好. 本文分享自华为云社区<盘点 Python 中字符串的常用操作,对新手极度友好>,作者:TT-千叶 . 在 Python ...

  10. 带你了解数仓安全测试的TLS协议

    摘要:SSL/TLS协议是业界常用的加密通信协议,通过该协议可以完成通信双方身份认证,会话密钥协商,通信内容加密和完整性保护. 本文分享自华为云社区<GaussDB(DWS)安全测试之TLS协议 ...