- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载
第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语
文档评论(0)