SQL Server: 揭开隐藏数据的面纱,优化应用程序性能
2009-02-07 10:20:32 来源:WEB开发网Figure 6Identifying the Most Costly Indexes
结果显示了维护性最高的索引以及有关数据库/表的详细信息。“维护开销”列的计算方式是将 user_updates 和 system_updates 列相加。索引的有用性(在“检索使用率”列中显示)的计算方式是将各 user_* 列相加。在决定是否要删除索引时,考虑索引的有用性非常重要。
如果涉及大量的数据修改,这些结果可帮您确定在应用更新前应删除的索引。然后,可在应用所有更新后重新应用这些索引。
常用索引
循环遍历所有数据库
sys.indexes DMV 是一个特定于数据库的视图。因此,联接到 sys.indexes 的查询只报告针对当前数据库的结果。但是,您可以使用系统存储过程 sp_MSForEachDB 遍历服务器上的所有数据库,然后提供服务器范围的结果。下面是我对这些情况所采取的做法。
创建一个临时表,其所需的结构与代码主体类似。我将一个不存在的记录(object_id 为 -999)放入其中,以便可以创建临时表结构。
代码的主体执行,即遍历服务器上的所有数据库。请注意,从每个数据库检索到的记录数量(使用 TOP 语句)应与要显示的记录数量相同。否则,这些结果可能并不真正代表服务器上所有数据库的最前 n 个记录。
这些记录将提取自临时表,并按我关注的列(在本例中为 user_updates 列)排序。
您可以使用 DMV 确定哪些索引最常使用,这些是到基础数据的最常用路径。如果这些索引能够实现自身改进或优化,则可以极大地提高整体性能。
sys.dm_db_index_usage_stats DMV 包含了一些详细信息,它们有关通过搜寻、扫描和查找来检索数据方面对索引的使用频率。此 DMV 已联接到 sys.indexes DMV,后者包含创建索引时所使用的详细信息。“使用率”列的计算方法是将所有 user_* 字段相加。使用图 7 所示的脚本即可实现此目的。此查询结果显示索引已被使用的次数,并按“使用率”排序。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接