首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>调优 IBM DB2 UDB SQL 存取路径

调优 IBM DB2 UDB SQL 存取路径

2011-11-29 17:22作者:Craig S. Mullins博客出处:Yesky新闻频道责任编辑:王健楠

  • 用SQL Server技能学习DB2 UDB V8
  •   Visual Explain 是 IBM® DB2® Universal Database™ 中的杰出工具,程序员和 DBA 用它来详细说明 DB2 优化器为 SQL 语句所选择的存取路径……

      Visual Explain 是 IBM® DB2® Universal Database™ 中的杰出工具,程序员和 DBA 用它来详细说明 DB2 优化器为 SQL 语句所选择的存取路径。事实上,Explain 应该是您性能监控策略的关键组件。Explain 为解决许多类型的性能问题提供了价值无法估量的信息,因为它提供这样的细节:

      DB2 在“幕后”所做的工作,以实现 SQL 请求的数据需求

      DB2 是否使用可用的索引,如果使用,DB2 如何使用它们

      为满足连接条件而访问 DB2 表的次序

      实现 SQL 语句的锁定需求

      基于所选存取路径的 SQL 语句的性能

      对于 Borland® Delphi™ 7 程序员,Visual Explain 会是一个用于发现 DB2 如何执行 SQL 请求的神奇资源。Delphi 使用 CLI 本机接口来与 DB2 交互。因而,Delphi 使用的是动态 SQL。当将 SQL 语句提交给 DB2 执行时,DB2 会“实时”地为动态 SQL 语句设计出存取路径。对分析者而言,在执行每条 SQL 语句之前,无法检查 DB2 为这些语句所选择的存取路径。所以,使用 Visual Explain 定期地检查 DB2 为所有 Delphi SQL 语句所选择的存取路径,这是很有意义的。这样做可以观察到哪些语句消耗了大部分资源。另外,还可以指导您如何调优 SQL 以达到更好的性能。

      但在深入探讨 explain 的用法之前,我首先需要研究 explain 确切地“说明”了什么。答案很简单,它说明了 DB2 存取路径。存取路径是 DB2 所使用的一种算法,以满足 SQL 语句的需求。但有大量各种类型的存取路径需要掌握。

      DB2 存取路径的类型及其组成部分

      当 DB2 优化器为每条 SQL 语句创建优化的存取路径时,可以挑选各种不同的技术。这些技术包括从简单的一连串顺序读到更为复杂的策略(譬如,使用多个索引来访问数据)。让我们来了解优化器用来设计 DB2 存取路径的一些最常用技术。

      在优化器必须做的许多决定中,最重要的决定可能是,是否使用索引来实现查询。在优化器做此项决定之前,它必须首先确定是否存在索引。请记住,您可以查询任何表中的任何列,却不能期望单单通过索引就能做到这一点。所以,优化器必须能够访问未建立索引的数据;它可以使用扫描来做到这一点。

      在大多数情形下,DB2 优化器喜欢使用索引。这是事实,因为索引可以大大优化数据检索。然而,如果不存在索引,就无法使用它了。并且在某些情况下仅仅使用数据的全扫描就可以极好地实现某些类型的 SQL 语句。例如,考虑下面这条 SQL 语句:

      以下是代码片段:

      SELECT * FROM EMP;

      在这条语句中,为什么 DB2 非要试图使用索引呢?这里没有 WHERE 子句,所以全扫描是最佳的。即使指定了 WHERE 子句,优化器也可能确定页面的顺序扫描要比索引式检索更好 — 所以可能不会选择索引式检索这种方法。

      存在索引的首要原因是它可以改善性能,那为什么非索引式的访问会比索引式的访问要好?唔,索引式访问可能比简单的扫描要慢。例如,一个非常小的表可能只有几个页面。读取所有的页面可能比先读取索引页然后再读取数据页要快。甚至对于较大的表,在某些情况下,组织索引可能需要额外的 I/O 以实现查询。当不使用索引来实现查询时,产生的存取路径会采用表扫描(或表空间扫描)方法。

      表扫描通常会读取表中每个页面。但在某些情况下,DB2 会非常聪明,它会限定要扫描的页面。此外,DB2 可以调用顺序预取以在请求某些页面之前就读取这些页面。当 SQL 请求需要按照数据存储在磁盘上的顺序来顺序地访问多行数据时,顺序预取特别有用。当优化器确定查询将按照顺序读取数据页面时,它会通知应该启用顺序预取。表扫描常常得益于顺序预取所作的提前读取的工作,因为当某个查询请求数据时,这些数据已经放在内存中了。

      

    共7页。 1234567下一页
    网友讨论

    软件频道最新更新

    热点推荐

    编辑推荐

    软件下载

    热门
    推荐

    网友关注

    软件
    资料
    游戏

    装机推荐

    文章排行

    本周
    本月
    最新更新
    天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
    Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络