在SQLServer2000和2005中怎样探测表碎片

怎样知道一个表什么时候有碎片?

  • 查询超时,性能下降
  • 磁盘活动增多
  • 缓存利用不高
  • 检查查询的I/O
  • 在2000中使用DBCC SHOWCONTIG检查Scan density,在2005中使用动态管理视图sys.dm_db_index_physical_stats.

当使用INSERT、UPDATE或DELETE语句修改数据时就可能产生表碎片,随着时间的推移,每个页面都可能产生碎片。 如果一个查询是基于表扫描或部分基于表扫描,那么为了额外的页面读操作将为SQLServer创建很多的处理,从而导致CPU过高以致没有反应。 碎片整理的对象是索引页级的逻辑碎片,以确保最优性能。 

索引碎片的影响有哪些?

它将降低性能;正常的查询会花费更长的时间去显示结果。如果查询参数是小的,基于取得的数据,查询优化器选择顺序扫描操作,一旦表有正确的索引将很快找到数据。表是否有正确的索引不总是一个很容易回答的问题,你不得不依赖于查看所有的执行计划或者和事件探查器一起使用索引优化向导。 

怎样测量表的碎片并减少碎片?

在SQLServer2000里,可以使用DBCC SHOWCONTIG来显示一个表的scan density和碎片级别。如果该语句带上WITH TABLERESULTS子句,那么它将显示一个额外信息的行集。DBCC INDEXDEFRAG和DBCC DBREINDEX语句用来减少碎片是最好的语句。

DBCC INDEXDEFRAG将整理索引的页级,这将使页的物理顺序和页节点的逻辑顺序相匹配。该语句每隔5分钟向用户报告预计完成的百分比。

即使正确地创建了索引,随着时间的推移,由于通过INSERT、UPDATE、DELETE操作引起的碎片往往引起性能问题。碎片(页面上的自由空间)的结果在为了一个特定的数据集使用查询参数时将导致内存使用不正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值