Visual Studio中的SQL优化工具

在开发过程中优化SQL语句可以节省大量的时间和金钱,确保应用程序在不增加数据库负担的情况下达到最佳性能。本文将介绍Visual Studio开发者如何不依赖数据库管理员(DBA)的技能来解决SQL Server性能问题。

Visual Studio开发者与SQL Server DBA

在开发过程中,一个经常被忽视的事实是SQL语句是可以优化的。执行计划、逻辑读取、CPU时间等概念可能令人困惑,通常留给SQL Server DBA处理。因此,应用程序的SQL性能调整通常在从开发阶段转移到生产阶段后才进行。DBA非常清楚在生产环境中对应用程序SQL进行性能调整的成本。然而,他们也意识到,在过去,开发者没有进行SQL性能调整所需的深入知识。

SQL Server查询

知道如何编写SELECT、INSERT、UPDATE和DELETE语句。但是否知道有成千上万种编写SQL语句的方法,可以产生完全相同的结果?当向SQL Server发出查询时,它会在执行之前处理该语句。它会寻找主键、索引、排序以及其他各种因素。考虑到这些因素以及其他统计数据,SQL Server将生成一个执行计划。该计划决定了服务器如何收集SQL请求的记录。SQL语句的不同写法会导致SQL Server创建不同的执行计划。不同的执行计划会导致SQL Server改变收集记录的方式。这些变体的性能各不相同,有的慢,有的快。找到编写SQL语句的最快方式是数据库应用达到最佳性能的关键。像Quest Software的SQL Optimizer forVisual Studio这样的工具能够理解执行计划和相关统计数据的所有细节,并利用这些信息来优化SQL语句。

它是如何工作的

原始查询被检查,以确定可以应用哪些转换。可能在过去考虑过的一个简单转换是使用IN、EXISTS或在where子句中使用链式OR。SQL Optimizer引擎知道数十种这样的转换,复杂性各不相同。应用转换后,它会再次检查结果语句,看看可以应用哪些转换。

图1. 转换SQL以产生多种重写方式。

这个过程只经过几次迭代,就会产生许多不同的编写相同SQL语句的方法。使用基于集合论的数学模型,原始语句的每次重写都保证在语义上是等价的。换句话说,它们在执行时都会产生相同的记录。最后,使用人工智能“反馈搜索”引擎,SQL Optimizer for Visual Studio找到了编写SQL语句的最佳方式。结果是优化后的SQL。

在Visual Studio内部优化SQL

SQL Optimizer for Visual Studio扩展了Visual Studio,允许任何开发者利用这个过程,轻松地优化他们的SQL语句。

安装SQL Optimizer后,右键单击任何解决方案或项目节点,即可找到应用程序中的所有SQL。将扫描与应用程序相关的所有源代码,以查找SQL语句

图2. 在解决方案/项目中找到所有SQL。

每个SQL语句都会被添加到SQL资源管理器中。可以看到哪些语句被优化了,以及它们最后一次优化的日期。SQL资源管理器还会对SQL语句进行分类,让一眼就能看出哪些语句是简单的、复杂的,甚至是潜在的问题。

图3.Visual Studio中的SQL资源管理器管理项目中的SQL。

从SQL资源管理器中右键单击将启动资源管理器中任何或所有语句的自动优化。完成后,可以查看一份报告,比较语句的前后版本,看看获得了多大的性能提升。

图4. 在SQL优化后查看性能改进。

无论SQL是嵌入在VB.Net中还是在存储过程中,SQL Optimizer for Visual Studio都可以自动化优化过程。SQL Optimizer for Visual Studio支持SQL Server 2000和2005,Visual Studio 2003和2005。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485