原文出处:http://www.sqlskills.com/blogs/paul/when-dbcc-dropcleanbuffers-doesnt-work/

DBCC DROPCLEANBUFFERS是用来清除内存中的数据缓存,一般我们在做性能调优时为了方便看到一条语句的执行时间和物理IO消耗,都会在语句执行前执行一遍DBCC DROP CLEANBUFFERS。

但,这招并不是时时很灵。

有人或许就碰到这种现象,即使执行了DBCC DROPCLEANBUFFERS,但在SSMS的输出信息里面还是看不到物理读,这条语句还是从内存中读取的数据(逻辑读)。

你会很诧异,“不是已经将内存中的缓冲清空了吗,怎么没有物理读呢?出现这种现象是不是DBCC DROPCLEANBUFFERS失效了呢?”

不是。DROP CLEANBUFFERS确实是可以用来清除内存中的数据缓存,但只能清除掉clean状态的缓存页面,相对的,如果这些页面是脏页,也就是内存中已被修改且还未同步到磁盘的数据页面,那么它是无法从缓存中清除的,这是为了性能的考虑。

所以当你遇到DROP CLEANBUFFERS“失效”时,尝试手动同步下内存和磁盘中的数据页面,执行:

checkpoint

你也可以通过如下语句查看当前内存中clean页面和脏页的数量和大小:

SELECT *,

[DirtyPageCount] * 8 / 1024 AS [DirtyPageMB],

[CleanPageCount] * 8 / 1024 AS [CleanPageMB]

FROM

(SELECT

(CASE WHEN ([database_id] = 32767)

THEN N'Resource Database'

ELSE DB_NAME ([database_id]) END) AS [DatabaseName],

SUM (CASE WHEN ([is_modified] = 1)

THEN 1 ELSE 0 END) AS [DirtyPageCount],

SUM (CASE WHEN ([is_modified] = 1)

THEN 0 ELSE 1 END) AS [CleanPageCount]

FROM sys.dm_os_buffer_descriptors

GROUP BY [database_id]) AS [buffers]

ORDER BY [DatabaseName]

GO

DBCC DROPCLEANBUFFERS失效了?的更多相关文章

  1. DBCC 命令2

    状态查询:收集和显示各类信息,状态检查. 如cachestats.pss.sqlmgrstats.memorystatus.proccache.freeproccache.freesystemcach ...

  2. DBCC常用命令小汇

    DBCC是SQL Server提供的一组控制台命令,功能很强大,掌握一些必要的语句,对操作数据库有不少帮助,所以决定整理一下,发现已有不少类似的整理,减少了不少工作,归类如下: 一.DBCC 帮助类命 ...

  3. SQLServer 维护脚本分享(11)部分DBCC及系统存储过程

    --DBCC命令与用法 DBCC HELP('?') DBCC HELP('useroptions') DBCC USEROPTIONS WITH NO_INFOMSGS --当前DB的区及文件 DB ...

  4. DBCC用法汇总

    本文摘自http://www.cnblogs.com/lilycnblogs/archive/2011/03/31/2001372.html 留作查阅 DBCC是SQL Server提供的一组控制台命 ...

  5. [转]DBCC (Transact-SQL)

    http://msdn.microsoft.com/zh-cn/library/ms188796.aspx Transact-SQL 编程语言提供 DBCC 语句以作为 SQL Server 的数据库 ...

  6. DBCC命令

    DBCC SQLMGRSTATS 用于产生3个不同的值,这些值用在你想查看高速缓存在ad-hoc和预编译的TSQL语句中是如何工作的 Memory Used(8K Pages):若内存页的数量非常大, ...

  7. List Available DBCC Commands

    DBCC Commands or Database Consistency Checker commands have been with SQL Server from its early ages ...

  8. DBCC - Undocumented commands

    These commands may affect system performance and/or force table-level locks.There is no guarantee th ...

  9. DBCC维护语句语法

    一.DBCC维护语句:对数据库.索引或文件组进行维护的任务--1.DBCC CLEANTABLE,回收删除的可变长度列和文本列的空间 DBCC CLEANTABLE  ( { 'database_na ...

随机推荐

  1. HTML 判断手机的类型(苹果手机安卓手机)

    function isJudege_PlatForm() { var version = navigator.appVersion; var platName = navigator.userAgen ...

  2. 完美解决全面屏蔽Google教程(终结者)

    最近谷歌的IP被大范围的禁用了.身处一个连谷歌都用不了的过度的程序员,深感命运多舛.幸好,魔高一尺,道高一丈.下面是几种可以使用谷歌的方法. 方法一 1)在chrome浏览器中输入:chrome:// ...

  3. moss2003 sp3补丁安装

    安装完成以后自己在产品库里增加的存储过程不见了,自我保护?

  4. 大前端学习笔记整理【五】rem与px换算的计算方式

    前言 这段时间的小项目中算是真正意义上使用了rem来进行移动端的页面布局,项目结束了我反思了一下之前的对于rem的使用...原来我以前对rem用法完全是在搞笑啊!!结合这次这个小项目,我觉得我也有必要 ...

  5. 排序算法 ----(转载::http://blog.csdn.net/hguisu/article/details/7776068)

    1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序 ...

  6. WinCE下读取注册表获得SD路径

    WinCE下读取注册表获得SD路径 [要点]WinCE注册表中[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory\] 下键Folde ...

  7. 字符串s中从第i个位置起取长度为len的子串,函数返回子串链表

    /*已知字符串采用带结点的链式存储结构(详见linksrting.h文件),请编写函数linkstring substring(linkstring s,int i,int len),在字符串s中从第 ...

  8. JAVA SSH 框架介绍

    SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架, ...

  9. Java 第17章 继承

    继承的概念 继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基, 是提高软件系统的可扩展性与可维护性的主要途径. 所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类 ...

  10. nodejs前端跨域访问

    XMLHttpRequest cannot load http://localhost:3000/. No 'Access-Control-Allow-Origin' header is presen ...