前事不忘,后事之师,不忘国耻!

 注册  找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1741|回复: 0

SQL Server索引(3)-测试中常看指标

[复制链接]

SQL Server索引(3)-测试中常看指标

[复制链接]
ehxz

主题

0

回帖

7157

积分

管理员

积分
7157
2008-1-29 21:14:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
之前的两篇文章中有2个例子,来演示要讲述的内容。其中提到了部分查看数据库状态的方法,那里并不是很全面,这篇文章罗列几个我在后面系列文章中会用到查看这些状态,数据的地方。以及测试中清除缓存的方法。

  如何获得索引的一些信息
  比如:查看索引的深度SQL 脚本如下:
  select INDEXPROPERTY (OBJECT_ID('ChargeHeap'),'ChargeHeap_NCInd','IndexDepth')其中的 'ChargeHeap' 为我们要查看索引所在的表名,'ChargeHeap_NCInd' 为所要查看的索引名,'IndexDepth' 为所要查看的索引属性。
  更多属性请参看下面页面的参数说明:http://technet.microsoft.com/zh-cn/library/ms187729.aspx
  或者我们在 SQL Server Management Studio 中选中我们要查看的索引,然后在右键菜单中查看索引的属性。其中 Fragmentation 标签页会有很多我们对这个索引感兴趣的内容,比如下图:
  我们可以在这里看到索引的深度,子节点数,数据页数等等信息。这些信息对我们分析查询语句的性能非常有帮助。 
001.jpg
  如何查看磁盘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)--- 记录数据的基本格式中,我们就使用数据表占用空间的报表
  具体报表可以参考以下链接:
  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查看数据库打开事务状态等。
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2024-5-5 13:25 , Processed in 0.197941 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表