知识大全 DB2中的终极SQL性能调节技术

Posted 指针

篇首语:临渊羡鱼,不如退而结网。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 DB2中的终极SQL性能调节技术相关的知识,希望对你有一定的参考价值。

DB2中的终极SQL性能调节技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  使用针对工作负载的正确的性能调节技术 以避免硬件升级和优化DB 性能

  性能通过响应时间 吞吐量 峰值响应时间 命中和每秒会话来衡量 SQL编码和调节技术直接影响性能 开发高性能的DB 应用需要对DB 技术的深入了解

  当然在小数据量时这些技术无足轻重 忽略的连接 子查询 表的表达式和CASE表达式的程序完全可以在轻量级负载下工作的很好 使用 %的SELECT INFO语句来进行数据获取的程序 在开始会非常的迅速 但是一旦数据量和会话速度增加 性能将受到很大影响 DB 的可扩展性需要小的 优化的SQL加上方案设计 性能结构 缓冲池 和针对工作负载模式优化的存储 另外的方案就是升级硬件了 当然对于有着硬件升级的无尽预算的人来说 不用阅读本文了 对于其他人 我将讲解如何编码聪明的SQL以及调优的访问路径

  指针对于DB 性能的影响

  曾经有段时间 在一个大的复杂的银行应用程序中存在着一个批处理程序 这个新的批处理程序和访问路径被通过代码走查的方式检查过了 因为项目截止日期的原因测试很少;在实际的首次运行中 程序在运行 个小时之后终止了 一个很慢的代码走查之后 发现了 个指针 每个指针访问一个不同的表中的数据 每个指针在其他打开的指针的循环中被打开 在彼此间传递数据 也就是说 这个程序在DB 以外竟然结合了 个表 这不是聪明的SQL 这个信息需要进入到 个表;然而 每个指针只能进入一个 因此 个指针被合并为一个聪明的指针

  这个批处理在第二天用了四分钟就完成了 大多数人可能会结束这个成功的任务了 但是务实的人不会 一个缓慢的EXPLAIN信息走查发现了一个有趣的表连接序列问题 优化器选择了开始 个表的复杂的循环连接 还使用了一系列的大的数据表(ADDR和NAME) 它们每个都包含 千万行数据 这不是DB 优化器的典型行为 然而 有一些使用<>比较小表之间列的连接情况 这些比较对于优化器来说很难估计 因为DB catalog包含了相等列而非不等列 这里就需要访问路径优化了 DB 优化者脑中肯定有多种推荐的解决方案 一些可以在包或语句层次上 另外的一些工作在谓词层次 当然还有其他一些传统方式不奏效情况下的终极技术 一个要求就是如下的性能调节技术提供给你的catalog以足够的统计 使用统计向导来保证优化器有关于你的数据的精确全景

  DB 性能调节技术

  包级别的SQL调优——需要REOPT(ONCE/ALWAYS/AUTO) BIND选项 这个语句通告优化器来在运行时重新优化包中的每个语句 至少ONCE 或者ALWAYS(每次执行) 在DB 中可以AUTO(需要时) 这项技术的开销由选择的选项和SQL语句的数量及复杂性决定 这些开销在批处理程序中可以忽略不计 但是在短期运行的交易中会有很大影响 在我们的例子中 批处理程序指针只有一个谓词和一个基数为 的主机变量 REOPT是一个调节选项 用来优化非统一列值分布和主机变量内容高可变的情况 是COLCARDF= 的反面 包级别的调节并不合适

  语句级别的调节技术——包括OPTIMIZE FOR n ROWS和FETCH FIRST n ROWS ONLY 这些语句 放在SELECT语句末尾 是在不需要结果集的情况下进行优化的 优化器假设除了这些语句的所有的SELECT语句需要整个结果 这些结果偏向于诸如数序和表预取的访问路径 因为我们的批处理指针一定需要整个结果 因此语句级别的调节也不是合适的技术

  谓词界别的调节技术——包括增加一个假的过滤器(TX CX=TX CX)或增加一个空操作到谓词上(+ / * CONCAT ) 一个假的过滤器能够通过减少总过滤器因素(表中满足资格的行的比例)改变优化器 这个方法能够改变表连接的顺序 索引选择和连接方法 多个假过滤器是允许的 但是必须在没有引用过的一列上 空操作(no op)能够通过降级一个过滤器从符合到不符合来改变优化器的工作方式 但是只在z/OS上有用 LUW优化器却不受其影响 这个改变也会影响一个表连接序列 索引选择和连接方法 谓词级别的技术可以被一起使用来获取想要的结果 我们例子中的指针对多个谓词级别调节的结合不起反应 因此是采用重武器的时候了

  一些终极调节技术包括使用DISTINCE的表的表达式和其他终极跨查询的块优化方法 这些技术要求手动查询重写 它们强制使得优化器以一个指定顺序的方式执行查询块 使用这些技术视需要终极提醒的 因为他们能把表连接序列 索引选择和连接方法从好改到坏 DISTINCE表表达式强制优化器优先于其他查询块执行圆括号中的查询 如果SELECT DISTINCE中指定的列引用了不同的表 表表达式可以被实例化为唯一的以供排序 我们的批处理指针有一个非优化的连接序列 使用该技术得到如下查询

  这样的查询重写迫使优化器通过T 连接表T 来连接ADDR和NAME 如果关键字DISTINCT在上例中省略了 DB 优化器合并表表达式查询和输出查询 这样就和原来的语句和连接序列一样了 SELECT DISTINCT是一个关键的组件 然而 因为列列表跨越了多个表 临时的 个表连接结果实例为一个唯一的工作文件以供排序 排序的开销平均在每次执行几千行 这是可以忽略的负载 批处理程序现在可以在两分钟之内完成任务了

  更多未来的调节技术

cha138/Article/program/DB2/201311/21936

相关参考

知识大全 DB2比较常用与实用sql语句总结

DB2比较常用与实用sql语句总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1、查找员工的编号

知识大全 解决DB2中出现的SQL1032N错误现象

解决DB2中出现的SQL1032N错误现象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在使用

知识大全 IBM DB2数据库的SQL语法参考手册

IBMDB2数据库的SQL语法参考手册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DB提供了

知识大全 四大数据库的比较(SQL Server、Oracle、Sybase和DB2)

四大数据库的比较(SQLServer、Oracle、Sybase和DB2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 DB2性能优化圣经——优化准则

DB2性能优化圣经——优化准则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  制定一个性能优化总

知识大全 基于DB2的数据库应用系统的性能优化

基于DB2的数据库应用系统的性能优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要结合DB

知识大全 讲解监控IBM DB2数据库的性能的详细步骤

讲解监控IBMDB2数据库的性能的详细步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DB数

知识大全 IBM DB2 LUW系统目录

SQL实战新手入门:IBMDB2LUW系统目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  I

知识大全 DB2数据库中的数据移动方法解析

DB2数据库中的数据移动方法解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DB中所谓的数据

知识大全 SQL语句性能调整之性能调整综述

SQL语句性能调整之性能调整综述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle数据