DBCC DROPCLEANBUFFERS失效了?
原文出处: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失效了?的更多相关文章
- DBCC 命令2
状态查询:收集和显示各类信息,状态检查. 如cachestats.pss.sqlmgrstats.memorystatus.proccache.freeproccache.freesystemcach ...
- DBCC常用命令小汇
DBCC是SQL Server提供的一组控制台命令,功能很强大,掌握一些必要的语句,对操作数据库有不少帮助,所以决定整理一下,发现已有不少类似的整理,减少了不少工作,归类如下: 一.DBCC 帮助类命 ...
- SQLServer 维护脚本分享(11)部分DBCC及系统存储过程
--DBCC命令与用法 DBCC HELP('?') DBCC HELP('useroptions') DBCC USEROPTIONS WITH NO_INFOMSGS --当前DB的区及文件 DB ...
- DBCC用法汇总
本文摘自http://www.cnblogs.com/lilycnblogs/archive/2011/03/31/2001372.html 留作查阅 DBCC是SQL Server提供的一组控制台命 ...
- [转]DBCC (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms188796.aspx Transact-SQL 编程语言提供 DBCC 语句以作为 SQL Server 的数据库 ...
- DBCC命令
DBCC SQLMGRSTATS 用于产生3个不同的值,这些值用在你想查看高速缓存在ad-hoc和预编译的TSQL语句中是如何工作的 Memory Used(8K Pages):若内存页的数量非常大, ...
- List Available DBCC Commands
DBCC Commands or Database Consistency Checker commands have been with SQL Server from its early ages ...
- DBCC - Undocumented commands
These commands may affect system performance and/or force table-level locks.There is no guarantee th ...
- DBCC维护语句语法
一.DBCC维护语句:对数据库.索引或文件组进行维护的任务--1.DBCC CLEANTABLE,回收删除的可变长度列和文本列的空间 DBCC CLEANTABLE ( { 'database_na ...
随机推荐
- lua string的自定义分割字符串接口
-------------------------------------------------------------------- -- Create By SunC 2014/7/1 -- ...
- [09]APUE:进程关系
[a] getpgid / setpgid #include <unistd.h> pid_t getpgid(pid_t pid) //成功返回进程组 ID,出错返回 -1 int se ...
- C#图片保存到本地
/// <summary> /// 上传微信头像到服务器 /// </summary> /// <param name="imgUrl">< ...
- DOM查找元素
1. 查找元素5种: 1. 按id查找1个元素对象: var elem=document.getElementById("id值"); 何时使用:1. 元素必须有id 2. 精确查 ...
- oracle flashback功能
2). 检查Flashback 功能, 缺省时功能是关闭的. SQL> select name, current_scn, flashback_on from v$database; NAME ...
- ios6 滤镜相关知识内容网址
http://blog.csdn.net/justinjing0612/article/details/8145607#
- python subprocess 自动运行实验室程序
import threading, os, subprocess, time exec_path = "/home/xhz/gems/ruby/amd...../bin/tester.exe ...
- 解决mac安装grunt时出现[command not found]的错误
第一步: 1先确定一下.bash_profile是否存在. 2在mac终端输入: test -e .bash_profile && echo "found" || ...
- C#中SQL Server数据库连接池使用及连接字符串部分关键字使用说明
(1) 数据库的连接使用后,必须采用close()连接等效的方法关闭连接.只有关闭后,连接才能进入连接池. 参见微软的使用连接池说明:https://msdn.microsoft.com/zh-cn/ ...
- API测试-Super Test
框架选择 Super Test:基本的HTTP请求,返回判断 Chai:对返回的结果进行判断 grunt:集成jenkins grunt-mocha-test:grunt任务 Jenkins环境配制 ...