Welcome

首页 / 软件开发 / .NET编程技术 / 为SQL提速 - 通过层交互分析优化数据库调用

为SQL提速 - 通过层交互分析优化数据库调用2010-12-24 MSDN Mark Friedman许多应用程序专为使用多个层而设计。在这样的应用程序中,就应用程序的 整体响应而言,对数据访问层的调用的性能至关重要。使用多个层可以提高应 用程序的灵活性。n 层方法也可以帮助实现关键组件的隔离,这可用于提高可 靠性和可伸缩性。将组件隔离到不同层中后,可以更轻松地在可用计算资源间 分布,因此使用多个层可以提高可伸缩性。

层交互分析 (TIP) 旨在帮助您了解应用程序所依赖的数据层的性能。TIP 是 Visual Studio 分析工具提供的一种新功能,用于测量和报告 .NET Framework 应用程序在等待对 ADO.NET 兼容数据库的同步调用完成时,所经历 的数据层延迟持续时间。对于经常调用数据库而又注重响应时间的应用程序, TIP 可以帮助您了解哪些数据请求是造成响应延迟的主要原因。

本文将介绍 TIP 并演示其报告功能。另外还将讨论 TIP 所依赖的检测技术 ,并提供一些有效使用 TIP 诊断与数据库活动相关的性能问题的最佳实践。本 文将逐步介绍在以下示例环境中使用 TIP:数据密集型的双层 ASP.NET Web 应 用程序,并且使用 LINQ to SQL 技术从 Microsoft SQL Server 访问数据。最 后将讨论如何使用标准 SQL 管理员性能工具来增加 TIP 性能数据,以便加深对 数据层性能的理解。

TIP 入门

TIP 会动态添加检测代码,用于在分析运行期间测量应用程序的数据层调用 的持续时间。Visual Studio 分析工具在 Visual Studio 2010 Premium Edition 和 Visual Studio 2010 Ultimate Edition 中提供。

若要启动分析会话,可以从“Analyze”(分析)菜单单击“Launch Performance Wizard”(启动性能向导),也可以从“Debug”(调试)菜单单 击“Start Performance Analysis”(启动性能分析),或者使用 Alt+F2 快捷 键。在性能向导的第一页上,将要求您选择一种分析方法。

TIP 适用于任何一种分析方法(采样、检测、内存或并发),但默认情况下 未启用。若要启用 TIP,您需要在性能向导的第三页上取消选中“在向导完成 后启动分析”复选框。(由于 TIP 尚未启用,您现在无法启动应用程序并开始 分析。)为了得到最佳结果,建议在一开始选择采样分析方法,这尤其适用于您 最注重的是数据层交互数据的情况。这主要是因为采样对应用程序性能的影响 最小。

若要启用 TIP 数据收集,请在性能向导中访问刚刚在“Performance Explorer”(性能资源管理器)窗口中创建的性能会话,然后右键单击以查看其 属性。在属性对话框中,选择“Tier Interactions”(层交互)选项卡,然后 选中“Enable tier interaction profiling”(启用层交互分析)复选框。单 击“OK”(确定)按钮可关闭该对话框。此时 TIP 已经启用,您已准备好开始 对应用程序进行分析。

若要开始运行实际分析,请单击“Performance Explorer”(性能资源管理 器)窗口中的“Launch with Profiling”(启动并分析)工具栏按钮。

有关在 Visual Studio 中启用 TIP 的完整说明,请参见 Habib Heydarian 的博客文章“Walkthrough:Using the Tier Interaction Profiler in Visual Studio Team System 2010”,地址为 http://blogs.msdn.com/b/habibh/archive/2009/06/30/walkthrough-using- the-tier-interaction-profiler-in-visual-studio-team-system-2010.aspx。

TIP 测量性能的方法

TIP 在分析运行期间将代码插入应用程序,用于测量对应用程序所使用的 ADO.NET 数据层的调用。当层交互分析活动时,Visual Studio 分析器检查解 决方案中的 Microsoft 中间语言 (MSIL),查找对 ADO.NET 函数的引用。调用 实时 (JIT) 编译器以生成由应用程序运行的本机代码之前,分析器插入向关键 ADO.NET 方法添加检测代码的指令。此检测代码跟踪每次 ADO.NET 调用期间所 用的时间量。

随着应用程序执行,TIP 将捕获和记录计时数据。对应用程序进行分析时, 此检测代码将记录执行的所有 ADO.NET 调用的持续时间,同时还捕获数据库调 用中使用的命令文本的副本。在应用程序运行期间,TIP 会收集使用 ADO.NET 类同步方法(包括 SQL、OLE DB、开放数据库连接 (ODBC) 和 SQL Server Compact (SQL CE) API)执行的所有数据库访问的计时数据。如果应用程序使 用 LINQ to SQL 或实体框架 API 访问 SQL 数据库,则 TIP 还将捕获计时数据 。

计时数据与分析会话期间收集的所有其他数据一起存储到 Visual Studio 分 析器文件 (.vsp) 中。由于调用外部数据库的应用程序执行的是进程外调用, 因此 TIP 添加用于检测应用程序的指令对应用程序整体性能产生的影响非常小 。