欢迎来到天天文库
浏览记录
ID:9507349
大小:121.50 KB
页数:28页
时间:2018-05-01
《sqlserver-揭开隐藏数据的面纱,优化应用程序性能》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQLServer:揭开隐藏数据的面纱,优化应用程序性能>>教育资源库 本文示例源代码或素材下载 本文讨论: 动态管理视图和函数 服务器等待的原因 常见索引问题 与逻辑I/O关联的问题 本文使用了以下技术: SQLServer目录 服务器等待的原因 读和写 数据库缺失索引 高开销的缺失索引 未使用的索引 高开销的已使用索引 常用索引 逻辑上零碎的索引 高I/O开销的查询 高CPU开销的查询 高开销的CLR查询 最常执行的查询 受阻塞影响的查询 最低计划重用率 进一步探讨 许多应用程序性能问题追根溯源
2、都可以归咎到性能欠佳的数据库查询;但是,有许多方法可以用来提高数据库性能。SQLServerTM2005收集许多信息,可以使用这些信息来确定产生此类性能问题的原因。 SQLServer2005收集与运行查询有关的数据。此数据存放在内存中,并从服务器重新启动后开始累积,可用于确定许多问题和指标,包括那些与表索引、查询性能和服务器I/O相关的问题和指标。可以通过SQLServer动态管理视图(DMV)和相关动态管理函数(DMF)查询此数据。这些都是基于系统的视图和函数,提供可用于诊断问题和调整数据库性能的服务器状态信息。 本文重点介绍使用SQLS
3、erver2005收集的信息来提高性能的领域。这种方法在很大程度上是一种非入侵式方法,因为它收集并研究现有数据,通常是查询基础系统数据。 我将演示如何获取此信息、讨论基础DMV、确定解释数据时要注意的所有问题,并指出其他一些可能会提高性能之处。为此,我将提供并分析一系列SQL脚本,这些脚本详细说明了SQLServer2005所收集数据的各个方面。可以从《MSDN®杂志》网站下载此脚本的完整版本(全部带CTTOP10 [TotalReads]=SUM(total_logical_reads) ,[Executioncount]
4、=SUM(qs.execution_count) ,DatabaseName=DB_NAME(qt.dbid)FROMsys.dm_exec_query_statsqsCROSSAPPLYsys.dm_exec_sql_text(qs.sql_handle)asqtGROUPBYDB_NAME(qt.dbid)ORDERBY[TotalReads]DESC;SELECTTOP10 [Total(total_logical_e=DB_NAME(qt.dbid)FROMsys.dm_exec_query_statsqsCROSSAPPLY
5、sys.dm_exec_sql_text(qs.sql_handle)asqtGROUPBYDB_NAME(qt.dbid)ORDERBY[TotalostReadsandV来查看此信息。 使用图3所示的脚本,可以显示给定服务器上的哪些数据库缺失索引。发现这些缺失索引很重要,因为这些索引通常提供检索查询数据所需的最佳路径。这可以随之减少I/O,从而提高整体性能。我的脚本会检查sys.dm_db_missing_index_details,并按数据库将缺失索引数相加,从而轻松确定需进一步调查哪些数据库。Figure3IdentifyingMiss
6、ingDatabasesSELECT DatabaseName=DB_NAME(database_id) ,[NumberIndexesMissing]=count(*)FROMsys.dm_db_missing_index_detailsGROUPBYDB_NAME(database_id)ORDERBY2DESC; Figure3IdentifyingMissingDatabases 数据库常分为基于事务的系统和基于报告的系统。将所显示的缺失索引应用到报告数据库相对容易。另一方面,对事务性数据库而言,通常需要进一步调查对基础表数据附加
7、索引的影响。 高开销的缺失索引 索引可对查询性能产生不同程度的影响。您可以深入了解服务器上所有数据库中开销最高的缺失索引,找出哪些缺失索引可能对性能产生最显著的正面影响。 sys.dm_db_missing_index_group_statsDMV记录了SQL尝试使用特定缺失索引的次数。sys.dm_db_missing_index_detailsDMV详细显示缺失索引的结构,例如查询所需的列。这两个DMV通过sys.dm_db_missing_index_groupsDMV联系在一起。缺失索引的开销(总开销列)的计算方法是,用户平均总开销
8、与用户平均影响的积,再乘以用户搜寻次数与用户扫描次数的和。 可以使用图4所示的脚本来确定开销最高的缺失索引。此查询的结果(按总开销排序
此文档下载收益归作者所有