SQLServer2005怎样评估和管理索引

更新时间:2023-05-31 05:37:56 阅读: 评论:0

SQLServer2005点菜攻略怎样评估和管理索引?
SQLServer2005怎样评估和管理索引?--王成辉翻译整理,转贴请注明出处 问题:SQLServer2005怎样评估和管理索引?
1)怎样知道索引是否有用?它们是怎样使用的?
2)哪些表和索引是没用或者很少用的?
3)索引维护的成本与它的性能比多少合适?
4)存在索引争夺吗?
5wrc赛车)更多的索引好还是更少的索引好?白带有血丝是什么原因 
回答:SQLServer2005动态管理视图(DMVs)返回会话、事务、请求的服务器状态信息。它可用于诊断、内存和过程调优、监控(SQLServer2000不支持)。儿童疱疹图片SQLServer引擎跟踪详细的资源使用情况,用lect语句从DMVs中可查到,但是这些信息不会长期驻留在磁盘上。 由于索引提供了代替表扫描的一个选择,且DMVs返回索引使用计数,所以可以比较索
引的成本和其性能。这个比较包括保持索引最新的成本,与使用索引而不是表扫描读数据的性能之比。谨记一个更新或删除操作先要读数据从而定位数据,然后对定位的数据进行写操作。一个插入操作在所有的索引上只是写操作。因此,一个大量的插入将使写操作次数超过读操作次数。一个大量的更改操作(包括更新和删除),读和写的次数通常很接近(假定没有记录找不到的情况发生)。一个大量的读操作,读的次数将超过写。引用约束如外键还要求额外的读操作(对于插入、更新、删除而言)去确保引用完整性得到维护。 
1班级优化)怎样知道索引是否有用?它们是怎样使用的? 首先来看看索引是否是有用的。DDL是用来创建对象(如索引)且更新目录的。创建索引不是使用索引,所以在索引相关的DMVs不会有记录,除非索引真正被使用。当一个索引被Select Inrt对账函 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.name, i.index_id from sys.indexes i, sys.objects o where objectproperty(o.object_id,'IsUrTable') = 1and i.index_id NOT IN (lect 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                        databa_id = @dbid )and o.object_id = i.object_idorder by objectname,i.index_id,indexname asc 
使用很少的索引和频繁使用的索引一样,都会记录在sys.dm_db_index_usage_stats中。为了找出这些索引,需要查看诸如ur_eks ur_scans ur_lookupsur_updates的列。
 --- 使用很少的索引排在最先
declare @dbid intlect @dbid = db_id()
lect objectname=object_name(s.object_id), s.object_id, indexname=i.name, i.index_id 
          , ur_eks, ur_scans, ur_lookups, ur_updatesfrom sys.dm_db_index_usage_stats s,            sys.indexes iwhere databa_id = @dbid and objectproperty(s.object_id,'IsUrTable') = 1and i.object_id = s.object_idand i.index_id = s.index_idorder by (ur_eks + ur_scans + ur_lookups + ur_updates) asc 
3)索引维护的成本与它的性能比多少合适?  如果一个表是频繁更改的而又有很少用到的索引,那么维护索引的成本将超过索引带来的好处。为了比较成本和其好处,可以如下使用表值函数sys.dm_db_index_operational_stats 
--- sys.dm_db_index_operational_stats
declare @dbid int
lect @dbid = db_id()         
  lect objectname=object_name(s.object_id), indexname=i.name, i.index_id            , reads=range_scan_count + singleton_lookup_count            , 'leaf_writes'=leaf_inrt_count+leaf_update_count+ leaf_delete_count            , 'leaf_page自我鉴定毕业生登记表
_splits' = leaf_allocation_count            , 'nonleaf_writes'=nonleaf_inrt_count + nonleaf_update_count + nonleaf_delete_count            , 'nonleaf_page_splits' = nonleaf_allocation_countfrom sys.dm_db_index_operational_stats (@dbid,NULL,NULL,NULL) s,                        sys.indexes iwhere objectproperty(s.object_id,'IsUrTable') = 1and i.object_id = s.object_idand i.index_id = s.index_idorder by reads desc, leaf_writes, nonleaf_writes --- sys.dm_db_index_usage_statslect objectname=object_name(s.object_id), indexname=i.name, i.index_id                        ,reads=ur_eks + ur_scans + ur_lookups                        ,writes =  ur_updatesfrom sys.dm_db_index_usage_stats s,            sys.indexes iwhere objectproperty(s.object_id,'IsUrTable') = 1and s.object_id = i.object_idand i.index_id = s.index_idand s.databa_id = @dbidorder by reads descgo 

本文发布于:2023-05-31 05:37:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/818312.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:操作   使用   成本   信息
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图