sqlserver 中一些常看的指标和清除缓存的方法

如何查看磁盘I/O操作信息

SET STATISTICS IO ON 命令是一个 使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。

我们在分析索引性能的时候,会非常有用。

启用了这个属性后,我们在执行 SQL 语句后,会收到类似如下的信息,这有利于我们分析SQL的性能:

(3999 row(s) affected)

表 'ChargeCL'。扫描计数 1,逻辑读取 9547 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

其中的 lob 逻辑读取、lob 物理读取、lob 预读 这三个指标是 读取 text、ntext、image 或大值类型 (varchar(max)、nvarchar(max)、varbinary(max)) 时的指标。

而 逻辑读取、物理读取、预读 是对普通数据页的读取。

使用 SQL Server Management Studio Standard Reports

我们在 SQL Server Management Studio 中,选择数据库服务器,或者具体数据库,或者Security -- Logins 时,或者Management 时,Notification Services 或者 SQL Server Agent 对象时候,都会看到SQL Server 替我们提供的一些现成报表,这些报表的数据,有利于我们分析数据库的状态。

比如在 SQL Server 索引基础知识(1)--- 记录数据的基本格式

http://blog.joycode.com/ghj/archive/2008/01/02/113290.aspx

中,我们就使用数据表占用空间的报表

具体报表可以参考以下链接:

SQL Server Management Studio Standard Reports - Overview

http://blogs.msdn.com/buckwoody/archive/2007/10/09/sql-server-management-studio-standard-reports-overview.aspx

测试中,释放缓存的一些方法

尤其查询语句性能测试时,数据是否被缓存,这是测试中一个重要点。下面几个命令帮助我们清除缓存。方便测试。

清除缓存有关的命令:

SQL 2000里面除了dbcc unpintable好像就没有了 而且这个操作也不会立即释放表内存Buffer

(DBCC UNPINTABLE does not cause the table to be immediately flushed from the data cache. It specifies that all of the pages for the table in the buffer cache can be flushed if space is needed to read in a new page from disk.)

SQL 2005/2008让DBA能够更自由的对SQL所占用的内存空间做处理 如:

CHECKPOINT

将当前数据库的全部脏页写入磁盘。“脏页”是已输入缓存区高速缓存且已修改但尚未写入磁盘的数据页。CHECKPOINT 可创建一个检查点,在该点保证全部脏页都已写入磁盘,从而在以后的恢复过程中节省时间。

DBCC DROPCLEANBUFFERS

从缓冲池中删除所有清除缓冲区。

DBCC FREEPROCCACHE

从过程缓存中删除所有元素。

DBCC FREESYSTEMCACHE

从所有缓存中释放所有未使用的缓存条目。SQL Server 2005 数据库引擎会事先在后台清理未使用的缓存条目,以使内存可用于当前条目。但是,可以使用此命令从所有缓存中手动删除未使用的条目。

另外还可以 sp_cursor_list 查看全部游标

DBCC OPENTRAN查看数据库打开事务状态等

时间: 2024-10-26 12:19:39

sqlserver 中一些常看的指标和清除缓存的方法的相关文章

sqlserver 中一些常看的指标和清除缓存的方法_MsSql

如何查看磁盘I/O操作信息 SET STATISTICS IO ON 命令是一个 使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息. 我们在分析索引性能的时候,会非常有用. 启用了这个属性后,我们在执行 SQL 语句后,会收到类似如下的信息,这有利于我们分析SQL的性能: (3999 row(s) affected) 表 'ChargeCL'.扫描计数 1,逻辑读取 9547 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取

sqlserver中通过osql/ocmd批处理批量执行sql文件的方法_MsSql

利用osql/ocmd批处理批量执行sql文件 注意:在上图中我们可以看到osql 并不支持 SQL Server 2008的所有功能,如果需要使用SQL Server 2008的所有功能可以使用ocmd命令. 有了osql/ocmd命令要批量执行sql文件当然需要写一个批处理命令,例如我们执行上面sql文件就可以在txt中编写下面的语句: 复制代码 代码如下: osql -S"127.0.0.1" -U"sa" -P"sa" -d"N

sqlserver中通过osql/ocmd批处理批量执行sql文件的方法

利用osql/ocmd批处理批量执行sql文件 注意:在上图中我们可以看到osql 并不支持 SQL Server 2008的所有功能,如果需要使用SQL Server 2008的所有功能可以使用ocmd命令. 有了osql/ocmd命令要批量执行sql文件当然需要写一个批处理命令,例如我们执行上面sql文件就可以在txt中编写下面的语句:复制代码 代码如下: osql -S"127.0.0.1" -U"sa" -P"sa" -d"No

sqlserver中获取当前日期的午夜的时间值的实现方法_mssql2005

下面是Infor syteline 8.02的自定议函数: 复制代码 代码如下: MidnightOf ALTER FUNCTION [dbo].[MidnightOf] ( @Date DATETIME ) RETURNS DATETIME AS BEGIN RETURN (dateadd(year,(datepart(year,@Date) - 2000),dateadd(month,(datepart(month,@Date) - 1),dateadd(day,(datepart(day,

iOS中 SDWebImage手动清除缓存的方法 技术分享

1.找到SDImageCache类 2.添加如下方法: - (float)checkTmpSize { float totalSize = 0; NSDirectoryEnumerator *fileEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:diskCachePath]; for (NSString *fileName in fileEnumerator) { NSString *filePath = [diskC

我是如何在SQLServer中处理每天四亿三千万记录的

首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. 项目背景 这是给某数据中心做的一个项目,项目难度之大令人发指,这个项目真正的让我感觉到了,商场如战场,而我只是其中的一个小兵,太多的战术,太多的高层之间的较量,太多的内幕了.具体这个项目的情况,我有空再写相关的博文出来. 这个项目是要求做环境监控,我们暂且把受监控的设备称为采集设备,采集设备的属性

在sqlserver中如何根据字段名查找字段所在的表

server|sqlserver 面的sql语句在sqlserver中根据字段名查询,看哪些表包含了这个字段 复制SQL代码保存代码select   a.name   表名,b.name   列名   from   sysobjects   a,syscolumns   b   where   a.id=b.id   and   b.name='表名'  and   a.type='U'

SQLSERVER中XML查询:FORXML指定RAW

SQL SERVER中XML查询:FOR XML指定RAW 前言 在SQL SERVER中,XML查询可以指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指定RAW的XML查询. 基础FOR XML查询 看实例: with TestXml as ( select 1 as id,'LeeWhoeeUniversity' as name union all select 2,'SQLSERVER中XML查询' union all select 3 ,'FO

SQLServer中的死锁的介绍

原文:SQLServer中的死锁的介绍 简介      什么是死锁?      我认为,死锁是由于两个对象在拥有一份资源的情况下申请另一份资源,而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且所持资源无法释放.       什么又是阻塞?      阻塞是由于资源不足引起的排队等待现象.比如同时两个进程去更新一个表.      这里我们可以把阻塞作为死锁的必要条件.下面我们先理解一下死锁和阻塞再来看一下我最近遇到一个问题以及解决思路. SQLServer中的死锁      对应到