文档详情

《优化SQL语句和存储过程》.pdf

发布:2015-12-30约字共13页下载文档
文本预览下载声明
下载 第17章 优化SQL语句和存储过程 系统性能中一个非常重要的方面涉及应用中使用的 S Q L语句。本章研究有效的应用设计、 查询设计和调整、索引设计和调整技术。最后,我们简要地看一下开放式数据库连接 ( o p e n database connectivity)(ODBC)技术,你可以使用O D B C技术在多次执行相同的 S Q L查询的应用 中获得较好的性能。 17.1 应用设计 一个高效的应用设计对系统的性能非常关键。如果你从第三方购买应用产品,检验实际 使用的数据库语句是十分困难或基本不可能的。如果你已经从本书的其他章节实现这些技术 和技巧,但是仍然发现存在性能问题,与你的应用提供商联系寻求帮助是十分明智的。 如果你的应用是自己设计开发或本国生产的,那么在优化应用和与其相关的查询上,就 具有更大的灵活性。考虑应用的一种方法是将它与客户作为一个控制实体看待。应用控制信 息流并指挥SQL Server数据库的行为。你的应用指示 SQL Server需要执行哪一条查询、何时执 行,以及如何处理结果。这反过来对锁的类型和周期、 I / O 总量以及服务器上加载的处理器 ( C P U )又有重大的影响,因此影响性能通常好坏与否。 因此,在应用设计阶段做出正确的决定是非常重要的。一个设计良好的应用允许 S Q L S e r v e r支持上千个并发用户。相反,一个设计拙劣的应用,即使使用最强大的服务器平台,也 只能处理为数不多的用户。 17.1.1 建议 必要时,可以很容易地分析并改正一些方面,以提高系统和在它上面运行的应用的性能。 你应该努力消除客户与 SQL Server 系统之间过量的网络传输,网络上信息的来回旅程是会话 式的传输,在SQL Server与客户之间传送每个批处理和结果集。通常,你可以使用 SQL Server 存储过程以最小化信息的往复传输。我们在本章后面检验存储过程。 在应用中另外一个需要查看的方面是返回结果集的大小。你应该尽量最小化结果集的大 小,因为提取用于客户端浏览的不必要的大型结果集会增加处理器和网络 I / O负担。大型返回 结果集还会减少应用远程使用的能力,并有可能限制多用户的可伸缩性。设计应用提示用户 进行充分输入,以便查询提交生成最合适的结果集,这是十分有意义的。你可以使用一些技 术控制返回结果集的大小。要了解有关正确调整结果集大小的详细信息,参见本章 1 7 . 4节。 当创建查询时,不要过度使用通配符,例如 SELECT * 。另外,应该强制性地确定一定的 输入域,以确保有足够的输入数据来构造一个更为有效的 S Q L语句。你还要考虑使用诸如 TO P 、P E R C E N T和SET ROWCOUNT这样的语句来限制查询返回的行的数量。最后,可以设 法从你的客户端系统中消除特定的查询。特定的查询一般构造拙劣,而且会返回远远超出需 要的行。消除特定的查询是一项相当有力的步骤,但它是一个选项。 一个经常被忽略的方面是提供允许用户取消查询和再次获得处理控制的应用特性。如果一 2 1 4 第四部分 优化S Q L语句 下载 个用户或客户犯了一个错误,允许他们取消查询将消除系统上不必要的处理。一个简单的取消按 钮会为系统的性能创造奇迹。当忽略这个特性时,会导致难于发现和解决的性能问题。O D B C和 D B -库连接两者都提供了A P I用于查询取消。如果你确实允许取消一个查询,就应该保证应用执 行一个提交或回滚操作,以确保数据的完整性,因为取消一个查询不能自动地提交或回滚事务。 另外一种你可以使用的简单技术是,总是实行查询或锁超时。这种方法防止错误编写的 查询永无休止地执行,这在允许特定查询的环境中是一个常见问题。 SQL Server和O D B C提供 函数和语句以控制查询持续时间和锁超时。 另外一个高效应用设计的常用方面是应用生成工具的选择。虽然我们没有全面概括这些 工具的选择,但确实有一个关于它们特性的建议。一些应用生成工具不允许你显式地控制 S Q L语句的生成和发送给 SQL Server 。透明地生成S Q L语句的工
显示全部
相似文档