[计算机]DB2数据库优化课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[计算机]DB2数据库优化课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 DB2 数据库 优化 课件
- 资源描述:
-
1、单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级1单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级1DB2数据库优化 经分项目组:严辉单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级2单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级2DB2 统计信息保持最新 如果没有存储在 DB2 系统目录中的统计信息,优化器在优化任何事物时都会遇到困难。这些统计信息向优化器提供了与正在被优化的 SQL 语句将要访问的表状态相关的信息。存储在系统目录中的统计信息的类型包括:关
2、于 表表的信息,包括总的行数、关于压缩的信息和总页数;关于 列列的信息,包括列的离散值的数量和存储在列中的值的分布范围;关于 表空间表空间的信息,包括活动页面的数量;索引索引的当前状态,包括是否存在索引、索引的组织(叶子页的数量和级别的数量)、索引键的离散值的数量以及是否群集索引;关于表空间和索引节点组或分区的信息。当执行 RUNSTATS 或 RUN STATISTICS 实用程序时,统计信息就会填充 DB2 系统目录。您可以从控制中心(Control Center)、批处理作业或通过使用命令行处理器来调用该实用程序。一定要确保在适当的时候积累统计信息,尤其是在生产环境中。单击此处编辑母版标
3、题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级3单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级3RUNSTATS语法表:表:db2 RUNSTATS ON TABLE 表名 索引:索引:db2 RUNSTATS ON TABLE 表名 FOR INDEXES ALL 表和索引:表和索引:db2 RUNSTATS ON TABLE 表名 AND INDEXES ALL 增强的统计信息增强的统计信息表:表:db2 RUNSTATS ON TABLE 表名 WITH DISTRIBUTION 索引:索引:db2 RUNSTATS ON TABLE
4、 表名 FOR DETAILED INDEXES ALL 表和索引:表和索引:db2 RUNSTATS ON TABLE 表名 WITH DISTRIBUTION AND DETAILED INDEXES ALL 常用例子常用例子RUNSTATS ON TABLE TR1ADMIN.MID_GSM_VOICE_CDR_000 ON KEY COLUMNS WITH DISTRIBUTION ON ALL COLUMNS AND SAMPLED DETAILED INDEXES ALL ALLOW READ ACCESS TABLESAMPLE BERNOULLI(1)REPEATABLE(1)
5、SET PROFILE NONE单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级4单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级4分布键分布键分布键是一列(或一组列),用来确定存储特定数据行的数据库分区。分布键是使用 CREATE TABLE 语句在表上定义的。如果没有为分布在数据库分区组中的多个数据库分区中的表空间中的表定义分布键,在缺省情况下将会根据主键的第一列创建分布键。若未指定主键,则缺省分布键是在该表中定义的第一个非长型字段列。(长型包括所有长型数据类型和所有大对象(LOB)数据类型)。如果正在与单一分区数据库分区
6、组相关的表空间中创建表,且您希望有分布键,则必须显式定义该分布键。缺省情况下,不会创建该分布键。当定义分布键时,应该考虑以下几点:不支持创建只包含长型数据类型(LONG VARCHAR、LONG VARGRAPHIC、BLOB、CLOB 或 DBCLOB)的多分区表。不能改变分布键定义。分布键应该包括最频繁连接的列。分布键应该由经常参与 GROUP BY 子句的列组成。任何唯一键或主键必须包含所有分布键列。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级5单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级5索引索引是行位置的列表
7、,按一个或多个指定列的内容来排序。索引通常用于加速对表的访问。创建索引的一些准则包括:在适当地方定义主键和唯一索引。创建关于查询用来连接表(Join 谓词)的任何列的索引。创建关于基于常规基础从中搜索特定值的任何列的索引。创建关于通常用在 ORDER BY 子句中的列的索引。确保使用了仅检索您需要的数据的谓词。例如,确保谓词的选择性值表示您想要返回的那部分表。当创建多列索引时,索引的第一列应该为查询中的谓词最常用的那一列。确保索引造成的磁盘和更新维护的开销不会太高。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级6单击此处编辑母版标题样式 单击此处编辑母版文本
8、样式 第二级 第三级 第四级 第五级6根据查询所使用的列建立多列索引根据查询所使用的列建立多列索引 对于一个特定的查询,可以为某一个表所有出现在查询中的列建立一个联合索引,包括出现在 select 子句和条件语句中的列。但简单的建立一个覆盖所有列的索引并不一定能有效提高查询,因为在多列索引中列的顺序是非常重要的。这个特性是由于索引的 B+树结构决定的。一般情况下,要根据谓词的选择度来排列索引中各列的位置,选择度大的谓词所使用的列放在索引的前面,把那些只存在与 select 子句中的列放在索引的最后。select add_date from temp.customer where city=WA
9、SHINGTON and cntry_code=USA;在 temp.customer 上建立(city,cntry_code,add_date)索引。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级7单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级7根据条件语句中的谓词的选择度创建索引根据条件语句中的谓词的选择度创建索引 建立索引需要占用数据库的存储空间,所以需要在空间和时间性能之间进行权衡。很多时候,只考虑那些在条件子句中有条件判断的列上建立索引会也会同样有效,同时节约了空间。1.select count(*)from t
10、emp.customer where city=WASHINGTON and cntry_code=USA;2.select count(*)from temp.customer where city=WASHINGTON;3.select count(*)from temp.customer where cntry_code=USA;Results:1.1404 2.1407 3.128700 选择度越大,过滤掉的记录越多,返回的结果集也就越小。从清单 6 的结果可以看到,第二个查询的选择度几乎有和整个条件语句相同。因此可以直接建立单列索引(city),其性能与索引(city,cntry_c
11、ode,add_date)具有相差不多的性能。从下表中可以看到单列索引(city)具有更加有效的性能空间比,也就是说占有尽可能小的空间得到尽可能高的查询速度。索引索引 查询计划总代价索引大小查询计划总代价索引大小cust_i1(city,cntry_code,add_date)28.94 timerons 19.52Mcust_i3(city)63.29 timerons 5.48M单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级8单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级8避免在建有索引的列上使用函数避免在建有索引的列
12、上使用函数 这是一个很简单的原则。如果在建有索引的列上使用函数,由于函数的单调性不确定,函数的返回值和输入值可能不会一一对应,就可能存在索引中位置差异很大的多个列值可以满足带有函数的谓词条件,因此 DB2 优化器将无法进行 Matching Index Scan,更坏的情况下可能会导致直接进行表扫描。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级9单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级9在那些需要被排序的列上创建索引在那些需要被排序的列上创建索引 这里的排序不仅仅指 order by 子句,还包括 distinct
13、 和 group by 子句,他们都会产生排序的操作。由于索引本身是有序的,在其创建过程中已经进行了排序处理,因此在应用这些语句的列上创建索引会降低排序操作的代价。这种情况一般针对于没有条件语句的查询。如果存在条件语句,DB2 优化器会首先选择出满足条件的纪录,然后才对中间结果集进行排序。对于没有条件语句的查询,排序操作在总的查询代价中会占有较大比重,因此能够较大限度的利用索引的排序结构进行查询优化。此时可以创建单列索引,如果需要创建联合索引则需要把被排序的列放在联合索引的第一列。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级10单击此处编辑母版标题样式 单
14、击此处编辑母版文本样式 第二级 第三级 第四级 第五级10合理使用合理使用 include 关键词创建索引关键词创建索引 include 只能用在创建唯一性索引中。只能用在创建唯一性索引中。select cust_name from temp.customer where cust_num between 0007000000 and 0007200000 可以在 cust_num 和 cust_name 上建立联合索引来提高查询性能。但是由于 cust_num 是主键,可以使用 include 关键字创建唯一性索引:create unique index temp.cust_i7 on te
15、mp.customer(cust_num)include(cust_name)使用 include 后,cust_name 列的数据将只存在于索引树的叶子节点,并不存在于索引的关键字中。这种情况下,使用带有 include 列的唯一索引会带来优于联合索引的性能,因为唯一索引能够避免一些不必要的操作,如排序。一般情况下,当查询的 where 子句中存在主键的谓词我们就可以创建带有 include 列的唯一索引,形成纯索引访问来提高查询性能。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级11单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四
16、级 第五级11指定索引的排序属性指定索引的排序属性 select max(add_date)from temp.employeecreate index temp.employee_i1 on temp.employee(add_date)这里存在一个误区,大家可能认为既然查询里要取得的是 add_date 的最大值,而我们又在 add_date 上建立了一个索引,优化器应该知道从索引树中直接去寻找最大值。但是实际情况并非如此,因为创建索引的时候并没有指定排序属性,默认为 ASC 升序排列,DB2 将会扫描整个索引树的叶子节点取得所有值后,然后取其最大。我们可以通过设置索引的排序属性来提高查询
17、性能。create index temp.employee_i1 on temp.employee(add_date desc)对于降序排列的索引,DB2 不需要扫描整个索引数的叶子节点,因为第一个节点便是最大的。我们同样可以使用 ALLOW REVERSE SCANS 来指定索引为双向扫描,具有和 DESC 近似的查询性能。ALLOW REVERSE SCANS 可以被认为是 ASC 和 DESC 的组合,只是在以后数据更新的时候维护成本会相对高一些。如果无法改变索引的排序属性,但是我们具有额外的信息,该公司每个月都会有新员工入职,那么这个查询就可以改写成:select max(add_da
18、te)from temp.employee where add_date current timestamp-1 month这样通过限定一个查询范围也会有效地提高查询性能。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级12单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级12谓词谓词 用户应用程序使用查询语句从数据库请求一组行,该查询语句指定要作为结果集返回的特定行的限定词。这些限定符通常出现在查询的 WHERE 子句。这种限定符称为谓词。可以将谓词分组为四种类别,按如何在求值过程中使用该谓词以及何时使用它来确定这些类别。这些
19、类别列示如下,按最佳性能到最差性能的顺序排列:范围定界谓词 索引控制谓词 数据控制谓词 残留谓词 单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级13单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级13DB2 组件和谓词单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级14单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级14组件简介 关系数据服务(RDS)从应用程序那里接收到SQL请求,并返回结果集;除了剩余谓词外,RDS将所有谓词都发送给数据管理服务(DMS)
20、;剩余谓词由RDS进行评估。DMS评估数据参数谓词。如果SELECT列表中存在一些不能由索引搜索进行评估的列,那么,DMS就会直接扫描数据页。索引管理器从DMS那里接收、评估范围界定谓词和索引参数谓词,然后,将数据页的行标识符(RID)返回给DMS。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级15单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级15谓词类型谓词类型特征特征 谓词类型谓词类型 范围定界范围定界索引控制索引控制数据控制数据控制残留残留减少索引 I/O 是 否 否 否 减少数据页 I/O 是 是 否 否 减少内部
21、传送的行数 是 是 是 否 减少合格行的数目 是 是 是 是 单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级16单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级16范围定界范围定界 范围定界谓词限制索引扫描的范围。它们提供索引搜索的开始和停止键值。范例:、INDEX IX1:NAMEASC,DEPTASC,MGRDESC,SALARY DESC,YEARS ASC、WHERE NAME =:hv1AND DEPT =:hv2AND YEARS :hv5前两个谓词(NAME=:hv1 和 DEPT=:hv2)是范围定界谓词,而
展开阅读全文