SQLServer2005怎样评估和管理索引.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQLServer2005怎样评估和管理索引? SQLServer2005怎样评估和管理索引?--王成辉翻译整理,转贴请注明出处?问题:SQLServer2005怎样评估和管理索引? (1)怎样知道索引是否有用?它们是怎样使用的? (2)哪些表和索引是没用或者很少用的? (3)索引维护的成本与它的性能比多少合适? (4)存在索引争夺吗? (5)更多的索引好还是更少的索引好?? 回答:SQLServer2005动态管理视图(DMVs)返回会话、事务、请求的服务器状态信息。它可用于诊断、内存和过程调优、监控(SQLServer2000不支持)。SQLServer引擎跟踪详细的资源使用情况,用select语句从DMVs中可查到,但是这些信息不会长期驻留在磁盘上。?由于索引提供了代替表扫描的一个选择,且DMVs返回索引使用计数,所以可以比较索引的成本和其性能。这个比较包括保持索引最新的成本,与使用索引而不是表扫描读数据的性能之比。谨记一个更新或删除操作先要读数据从而定位数据,然后对定位的数据进行写操作。一个插入操作在所有的索引上只是写操作。因此,一个大量的插入将使写操作次数超过读操作次数。一个大量的更改操作(包括更新和删除),读和写的次数通常很接近(假定没有‘记录找不到’的情况发生)。一个大量的读操作,读的次数将超过写。引用约束如外键还要求额外的读操作(对于插入、更新、删除而言)去确保引用完整性得到维护。? (1)怎样知道索引是否有用?它们是怎样使用的??首先来看看索引是否是有用的。DDL是用来创建对象(如索引)且更新目录的。创建索引不是使用索引,所以在索引相关的DMVs不会有记录,除非索引真正被使用。当一个索引被Select、 Insert、 Update或者 Delete引用时,会被sys.dm_db_index_usage_stats捕获。如果运行一个典型的SQLServer使用周期后,所有的有用的索引都会记录在sys.dm_db_index_usage_stats中。这样,任何一个在sys.dm_db_index_usage_stats中找不到的索引就是没用的索引(在最近的一个SQLServer使用周期里)。未使用的索引可通过下面的方式找到:? ?(2)哪些表和索引是没用或者很少用的?? 未使用的表和索引。表都有一个索引ID,如果是0则为堆表,1则为聚集索引 Declare @dbid int Select @dbid = db_id(Northwind)Select? objectname=object_name(i.object_id)??????????????????????? , indexname=, i.index_id from sys.indexes i, sys.objects o where objectproperty(o.object_id,IsUserTable) = 1and i.index_id NOT IN (select s.index_id ?????? from sys.dm_db_index_usage_stats s ?????????????? where s.object_id=i.object_id and ??????????????????????? i.index_id=s.index_id and ??????????????????????? database_id = @dbid )and o.object_id = i.object_idorder by objectname,i.index_id,indexname asc? 使用很少的索引和频繁使用的索引一样,都会记录在sys.dm_db_index_usage_stats中。为了找出这些索引,需要查看诸如user_seeks、 user_scans、 user_lookups和user_updates的列。 ? 使用很少的索引排在最先 declare @dbid intselect @dbid = db_id() select objectname=object_name(s.object_id), s.object_id, indexname=, i.index_id??????????? , user_seeks, user_scans, user_lookups, user_updatesfrom sys.dm_db_index_usage_stats s,??????????? sys.indexes iwhere database_id = @dbid and objectproperty(s.object_id,IsUserTable) = 1and i.object_id = s.object_

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档