返回首页 > 您现在的位置: SEO秘密 > seo培训 > 正文

IBMDB2数据库SQL编码优化基础教程介绍(二)

发布日期:2016/5/29 3:17:47 浏览:556

优化器在功能上等价于一个专家系统。专家系统是一个标准规则集合,当与情境数据组合时,它返回一个“专家”意见。例如,医学专家系统采用一个规则集合,用来确定哪些药可以用于哪些疾病,将规则集与描述疾病症状的数据组合,并将知识库应用于输入症状的列表。DB2优化器会根据存储在DB2系统目录中的情境数据和SQL格式的查询输入来生成对数据检索方法的专家意见。

在DBMS中优化数据访问的概念是DB2最强大的能力之一。请记住,您访问DB2数据时应告诉DB2要检索什么,而不是如何检索。无论数据实际上是如何存储和操作的,DB2和SQL都可以访问该数据。从物理存储特征中分离出访问标准叫作物理数据独立性。DB2的优化器是完成该物理数据独立性的组件。

如果您不要索引,DB2仍然能够访问数据(尽管效率会降低)。如果将一列添加到正在被访问的表中,DB2仍然可以在不更改程序代码的情况下操作数据。因为到DB2数据的物理存取路径并不是由程序员在应用程序中编码的,而是由DB2生成的,所以这种情况是完全有可能发生的。

这个特点与非DBMS系统非常不同,在那种系统中,程序员必须知道数据的物理结构。如果有索引,程序员就必须编写适当的代码来使用该索引。如果某人删除了索引,程序就不能工作,除非程序员进行更改。而使用DB2和SQL就不必如此。这一灵活性完全归功于DB2自动优化数据操作请求的能力。

优化器根据许多信息执行复杂的计算。要使优化器的工作方式直观化,可以将优化器想象成执行一个四步骤的过程:

1、接收并验证SQL语句的语法。

2、分析环境并优化满足SQL语句的方法。

3、创建计算机可读指令来执行优化的SQL。

4、执行指令或存储它们以便将来执行。

这个过程的第二步是最有趣的。优化器怎样决定如何以它的方式执行您可以发送的大量SQL语句?

优化器有许多类型的优化SQL的策略。它如何选择在优化存取路径中使用这些策略中的哪一个?IBM并没有发布优化器如何确定最佳存取路径的真正和深入的详细信息,但优化器是一个基于成本的优化器。这意味着优化器将始终尝试为每个查询制定减少总体成本的存取路径。要实现这个目标,DB2优化器会应用查询成本公式,该公式对每条可能的存取路径的四个因素进行评估和权衡:CPU成本、I/O成本、DB2系统目录中的统计信息和实际的SQL语句。

性能准则

因此,只要记住关于DB2优化器的信息,您就可以实现这些准则以便获得更好的SQL性能:

1)使DB2统计信息保持最新:如果没有存储在DB2系统目录中的统计信息,优化器在优化任何事物时都会遇到困难。这些统计信息向优化器提供了与正在被优化的SQL语句将要访问的表状态相关的信息。存储在系统目录中的统计信息的类型包括:

关于表的信息,包括总的行数、关于压缩的信息和总页数;

关于列的信息,包括列的离散值的数量和存储在列中的值的分布范围;

关于表空间的信息,包括活动页面的数量;

索引的当前状态,包括是否存在索引、索引的组织(叶子页的数量和级别的数量)、索引键的离散值的数量以及是否群集索引;

关于表空间和索引节点组或分区的信息。

当执行RUNSTATS或RUNSTATISTICS实用程序时,统计信息就会填充DB2系统目录。您可以从控制中心(ControlCenter)、批处理作业或通过使用命令行处理器来调用该实用程序。一定要与您的DBA一起工作以确保在适当的时候积累统计信息,尤其是在生产环境中。

2)构建适当的索引:也许您为保证最佳DB2应用程序性能而可以做的最重要的事就是根据应用程序使用的查询为您的表创建正确的索引。当然,说总比做更容易。但我们可以从一些基础开始。例如,考虑以下这条SQL语句:

SELECTLASTNAME,SALARY

FROMEMP

WHEREEMPNO=’000010’

ANDDEPTNO=’D01’

什么索引会对这个简单查询有作用?首先,考虑您可以创建的所有可能的索引。您的第一个简短列表可能看起来如下:

EMPNO上的Index1

DEPTNO上的Index2

EMPNO和DEPTNO上的Index3

这是一个好的开始,Index3可能是最好的。它让DB2使用索引来立即查找满足WHERE子句中的两个简单谓词的行。当然,如果您已经有许多关于EMP表的索引,您也许应该检查再创建另一个关于表的索引所带来的影响。要考虑的因素包括:

修改影响:DB2将自动维护您创建的每个索引。这表示对该表的每个INSERT和每个DELETE都将不仅在表中插入和删除,而且会在其索引中插入和删除。如果您对在索引中的列的值进行UPDATE操作,那么您还更新了该索引。因此索引加快了检索过程的速度,但减慢了修改的速度。

现有索引中的列:如果在EMPNO或DEPTNO上已经有了一个索引,那么创建另一个关于该组合的索引也许并不明智。但是,更改另一个索引以添加缺少的列也许可以起作用。但也不一定,因为索引中列的顺序也许会根据查询而有很大差异。例如,考虑以下查询:

SELECTLASTNAME,SALARY

FROMEMP

WHEREEMPNO=’000010’

ANDDEPTNO’D01’;

在这种情况下,在索引中应该首先列出EMPNO。然后列出DEPTNO,从而允许DB2对第一列(EMPNO)执行直接索引查找,然后针对大于号扫描第二列(DEPTNO)。

而且,如果已经存在关于这两列的索引(一个关于EMPNO,一个关于DEPTNO),DB2可以使用它们来满足该查询,因此创建另一个索引也许是没有必要的。

微信公众号

TechTarget

官方微博

TechTarget中国

评论查看更多评论

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

提交评论IBMDB2数据库SQL编码优化基础教程介绍IBMDB2数据库SQL编码优化基础教程介绍(二)DB2数据库安装与升级

关系型数据库是大多数现有IT系统和应用程序的基础,并且长时间里仍将继续主导数据领域。

对于许多企业而言,关系数据库管理系统(RDBMS)已经能够满足使用要求,那些新技术是否是你真正需要的?企业要认真考虑这个问题。

IBMDB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。

IBM近日宣布,将大力推进ApacheSpark项目,并计划培养超过100万名Spark数据科学家和数据工程师。

相关推荐

IBMDB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。

IBM近日宣布,将大力推进ApacheSpark项目,并计划培养超过100万名Spark数据科学家和数据工程师。

IBM准备在未来四年投资30亿美元成立一个专门的物联网(IoT)部门,并由此建立一个基于云的开放平台来帮助客户进行更好的数据整合。

开放数据平台联盟的成立旨在为了推动Hadoop的标准化,但项目能否最终成功,或能否项向着承诺的方向发展,还有很多不确定因素。

技术手册

OracleGoldengate是一款实时访问、基于日志变化捕捉数据,并且在异构平台之间进行数据传输的产品。利用这个技术,Goldengate能够实现低延迟、高性能、低影响进行连续的数据集成。

SQLServer自带一系列强大的管理工具集,但是这并不是说SQLServer已经完全具备了开箱即用的能力,你还是需要一些特定的第三方工具来确保SQLServer的可靠性、安全性和可管理性。

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

在本次的TechTarget《数据库电子书》中,我们将研究许多T-SQL新功能,并通过一些例子来展示它们如何使用。

《IBMDB2数据库SQL编码优化基础教程介绍(二)》相关参考资料:
数据库优化、access数据库教程、数据库系统基础教程、数据库教程、sql数据库、nosql数据库有哪些、sql2005数据库学习、nosql数据库、sql sever数据库

最新seo培训
  • 学好本领提升技能!龙城街道促进残疾人创新创业专题04-30

    来源时间为:2024-04-21(记者李云云)为进一步深化龙城街道残疾人关爱工作,进一步推动残疾人创新创业,助力他们提升个人技能、增强自我发展能力,4月17日,……

  • “头雁”项目管理人员培训班开班04-30

    来源时间为:2024-04-22近日,由农业农村部人力资源开发中心主办的“头雁”项目管理人员培训班在华中农业大学开班。各省(市、区)“头雁”项目、各“头雁”培育……

  • 点亮智库04-24

    来源时间为:2024-04-23将本页面保存为书签,全面了解最新资讯,方便快捷。////////当前位置:点亮智库&中信联周剑:为什么要长期坚定不移推进……


欢迎咨询
返回顶部