IBM DB2数据库SQL编码优化基础教程介绍(四)

2008-11-18    | |
打印本文章
RSS

导读:本文主要介绍了特定数据库应用程序开发技巧,无论您使用的是Delphi、C++Builder还是Kylix,某些技巧和准则将帮助您确保在访问DB2数据时获得好的性能……

关键词:IBM DB2 DB2 UDB SQL编码优化 基础教程

正在加载数据...

  参数化查询的主要性能好处是优化器可以制定在重复执行语句时能够再使用的存取路径。与每次WHERE子句中需要一个新值就发出一条全新的 SQL 语句相比,这可以给程序增加很大的性能收益。

  但是,这些规则并不是 SQL 性能调优的最终和最高目标 - 决不是。您可能需要附加的、深入的调优。但遵循前面的规则将确保您不会犯降低应用程序性能的“新手”错误。

  特定数据库应用程序开发技巧

  无论您使用的是 Delphi、C++Builder 还是 Kylix,某些技巧和准则将帮助您确保在访问 DB2 数据时获得好的性能。例如,在某些情况下,使用 dbExpress TM来代替 ODBC/JDBC 或 ADO 可以提高查询性能。dbExpress 是用于从 Delphi(或 Borland Kylix™)处理动态 SQL 的跨平台接口。

  要确保在您的应用程序中经常发出 COMMIT 语句。COMMIT 语句控制工作单元。发出 COMMIT 会将自上一个 COMMIT 语句之后的所有工作“永远”记录到数据库中。在发出 COMMIT 之前,可以使用 ROLLBACK 语句回滚工作。当修改数据(使用 INSERT、UPDATE 和 DELETE)但没有发出 COMMIT 时,DB2 将在数据上加一把锁并保持该锁 - 这把锁会使其它应用程序在等待检索被锁住的数据时超时。通过在工作完成时发出 COMMIT 语句,并且确保数据是正确的,就释放了该数据以供其它应用程序使用。

  另外,构建应用程序时要考虑使用情况。例如,当某个特定查询返回几千行给最终用户时,要慎重处理。对于在程序和最终用户之间的在线交互,很少会用到几百行以上的数据。您可以在 SQL 语句上使用 FETCH FIRST nROWS ONLY 子句来限制返回到查询的数据量。例如,考虑以下查询:


  SELECT EMPNO, LASTNAME, SALARY 

  FROM EMP 

  WHERE SALARY > 10000.00 

  FETCH FIRST 200 ROWS ONLY; 


  该查询将只返回 200 行。如果有超过 200 行符合条件也没有关系;如果您尝试从查询中 FETCH(访存)超过 200 行,DB2 将用 +100 SQLCODE 表明数据结束。当您想要限制返回给程序的数据量时,这种方法很有用。

  DB2 支持另一个名为 OPTIMIZE FOR nROWS 的子句,该子句不限制要返回给游标的行数,但从性能角度看可能是有帮助的。使用 OPTIMIZE FOR nROWS 子句告诉 DB2 如何处理 SQL 语句。例如:


  SELECT EMPNO, LASTNAME, SALARY 

  FROM EMP 

  WHERE SALARY > 10000.00 

  OPTIMIZE FOR 20 ROWS; 


  这告诉 DB2 尝试尽快访存前 20 行。如果您的 Delphi 应用程序在显示从数据库检索出来的数据行时每次显示 20 行,那么这将非常有用。

  对于只读游标,使用 FOR READ ONLY 子句确保游标无歧义。Delphi 不能在 DB2 游标中执行位置更新,因此将 FOR READ ONLY 附加到每条 SELECT 语句后面可以使游标成为无歧义的只读游标,从而对 DB2 有所帮助。例如:



  SELECT EMPNO, LASTNAME, SALARY 

  FROM EMP 

  WHERE SALARY > 10000.00 

  FOR READ ONLY;
 
  结束语

  了解 SQL 编码以获得最佳性能的基础知识将使您的Delphi企业应用程序的性能立即得到增长。但我只揭露了冰山一角。您需要学习日益增多的 SQL 的复杂类型,包括连接、子选择和联合等。您还需要学习如何最好地编写这些 SQL 语句以及如何发现 DB2 选择的存取路径来满足您的 SQL 请求。确实,还有许多要学习。但是您已经学习了一些如何最大限度地利用 DB2 SQL 的初步知识,尽情地享用这些知识吧。


IBM DB2数据库SQL编码优化基础教程介绍
 IBM DB2数据库SQL编码优化基础教程介绍(一)
 IBM DB2数据库SQL编码优化基础教程介绍(二)
 IBM DB2数据库SQL编码优化基础教程介绍(三)
 IBM DB2数据库SQL编码优化基础教程介绍(四)

原文出处:http://tech.ccidnet.com/art/982/20080917/1573057_4.html
来源:赛迪网    作者:yan    
  评论
 
IBM在升级了旗舰DB2数据库后正努力吸引竞争对手的用户,升级后的DB2数据库能够运行为其他数据库尤其是Oracle数据库编写的应用。此举有可能刺激企业把他们现有Oracle或者……
 
在V7中,存在涉及insert和键锁的并发问题,但是在V8中,由于提供了type-2索引,这些问题实际上已经不见了。如果要迁移到V8中来……
 
继前一篇文章,本文继续介绍如何在DB2中提高Insert性能的技巧。包括以下内容:找到存储行的地方、缓冲池、I/O和页清除以及锁等方面的内容。
 
怎样在DB2中提高Insert性能的技巧?首先让我们快速地看看insert一行时的处理步骤。这些步骤中的每一步都有优化的潜力,对此我们在后面会一一讨论……
 
为了增加灵活性并提供更好的模式演化,DB2 V9.5为XML模式引入了update特性。以前注册的模式能够更新为新模式,只要它们互相兼容。
在SQL Server中,我们如何进行索引设计来提升系统的性能和对查询进行优化,是许多用户非常关注的问题,在本次技术专题中,我们将分群集索引和非群集索引设计两部分来为您详细分析。
本技术专题主要为使用Oracle SQL Developer和其他开发工具。包括如何使用Oracle SQL Developer和其他开发工具、使用Oracle Database Home Page、在Oracle中使用SQL*Plus等方面。
本专题为QL SELECT语句基础。侧重概述了如何使用SELECT来访问SQL数据库中所有内容以及组成SELECT语句的许多子句名称和功能;同时还阐述了如何使用DISTINCT关键字消除重复的行,以及如何正确使用ORDER BY子句来排序数据。
最新更新
专家答疑
技巧
Brian Fedorko
Oracle数据库审计功能十分强大、灵活并且易于配置,适当并有效地使用数据库审计功能是拥有高效安全策略的基础。
Brian Peasland
Oracle数据库二进制文件和库文件是高版本版本的,而备份的数据库内部如果仍然是较低版本,那么Oracle将不允许你打开数据库,除非你完成了升级过程。
Maria Anderson
在Windows XP环境下,使用数据库升级助手将Oracle从9.2.0.1升级到10g R2,出现DBUA不能识别Oracle数据库的SID问题如何解决。

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录