书签 分享 收藏 举报 版权申诉 / 37
上传文档赚钱

类型[计算机]DB2数据库优化课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3515558
  • 上传时间:2022-09-10
  • 格式:PPT
  • 页数:37
  • 大小:412.02KB
  • 【下载声明】
    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)是范围定界谓词,而

    22、 YEARS :hv5 是索引控制谓词。优化器在对这些谓词求值时使用索引数据而不是读取基本表。这些索引控制谓词减小需要从表中读取的行集,但它们不影响访问的索引页数。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级17单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级17索引控制索引控制 索引控制谓词不能限制搜索范围,但可根据该索引来求值,因为在该谓词中涉及到的列是索引键的一部分。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级18单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级

    23、 第四级 第五级18数据控制数据控制 索引管理器不能求值但数据管理服务可以求值的谓词称为数据控制谓词。这些谓词通常需要访问表中的单独行。如果需要,“数据管理服务”检索对该谓词求值需要的列以及任何其他列以满足 SELECT 列表中不能从该索引获取的列。通常,这种谓词需要从基本表中存取个别行,如果需要的话,数据管理服务还会提取需要的列来评估该谓词。例如,假设索引定义在表project的projno列上,而不是deptno列上,执行下面的查询:SELECT projno,projname,repemp FROM projectWHEREdeptno=D11ORDER BY projno谓词“dept

    24、no=D11”是数据参数谓词,因为没有索引定义在deptno列上,必须存取基本表来评估该谓词。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级19单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级19残留谓词残留谓词 残留谓词比访问表需要更多的 I/O 成本。它们可具有下列特征:使用相关子查询 使用量化子查询,这些子查询包含 ANY、ALL、SOME 或 IN 子句 读取 LONG VARCHAR 或 LOB 数据,该数据存储在与表分开的文件中 剩余谓词是用关系数据服务(RDS)来进行评估的,而且,它在这四类谓词中成本最昂贵。由

    25、于相对范围界定谓词和索引参数谓词来说,剩余谓词和数据参数谓词的成本比较高,所以,我们应该尽可能地限制范围界定谓词和索引参数谓词界定的行数。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级20单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级20在只使用一条语句即可做到时避免使用多条语句 INSERT INTO tab_comp VALUES(item1,price1,qty1);INSERT INTO tab_comp VALUES(item2,price2,qty2);INSERT INTO tab_comp VALUES(i

    26、tem3,price3,qty3);INSERT INTO tab_comp VALUES(item1,price1,qty1),(item2,price2,qty2),(item3,price3,qty3);SET A=expr1;SET B=expr2;SET C=expr3;VALUES expr1,expr2,expr3 INTO A,B,C;单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级21单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级21从多个 SQL 语句到一个 SQL 表达式 SQL 语言提供了两类条件构造

    27、:过程型(IF 和 CASE 语句)和函数型(CASE 表达式)。在大多数环境中,可使用任何一种构造来表达计算,到底使用哪一种只是喜好问题。但是,使用 CASE 表达式编写的逻辑不但比使用 CASE 或 IF 语句编写的逻辑更紧凑,而且更有效。IF(Price=MaxPrice)THEN INSERT INTO tab_comp(Id,Val)VALUES(Oid,Price);ELSE INSERT INTO tab_comp(Id,Val)VALUES(Oid,MaxPrice);END IF;INSERT INTO tab_comp(Id,Val)VALUES(Oid,CASE WHEN

    28、(Price=MaxPrice)THEN Price ELSE MaxPrice END);避免过程层和数据流层之间的上下文切换 单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级22单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级22谓词中的行表达式 谓词比较已得到扩展,可支持将一组值(称为行表达式)与另一组值进行比较。值比较SELECT*FROM t1 WHERE(c1,c2,SUBSTR(c3,1,2)=(10,c4,SQ)SELECT*FROM t1 WHERE c1=10 AND c2=c4 AND SUBSTR(c3

    29、,1,2)=SQ 子查询 SELECT*FROM t1 WHERE(c1,c2,SUBSTR(c3,1,1)=(SELECT a,b,c FROM mytable WHERE d=t1.c4)单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级23单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级23在无副作用的情况下,请使用 SQL 函数 SQL 过程和 SQL 函数是使用不同技术实现的。SQL 过程中的查询是单独编译的,每个查询都成为包中的一个节。编译是在过程创建时进行的,直到重新创建过程或者直到重新绑定其相关的包时才重新编译这

    30、些查询。另一方面,SQL 函数中的查询是一起编译的,就好象函数体是一个查询一样。每当编译一条使用 SQL 函数的语句时,也会对 SQL 函数进行编译。与 SQL 过程中所发生的情况不同,SQL 函数中的过程语句与数据流语句是在同一个层中执行的。因此,每当控制从过程语句流向数据流语句或相反时,并不发生上下文切换。因为存在这些区别,所以当给定的过程代码段作为函数实现时的执行速度通常比作为过程实现时要快。只是从数据库抽取数据而不执行任何更改时,请考虑使用只是从数据库抽取数据而不执行任何更改时,请考虑使用 SQL 函数而不是使用函数而不是使用 SQL 过程过程 单击此处编辑母版标题样式 单击此处编辑母

    31、版文本样式 第二级 第三级 第四级 第五级24单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级24CREATE PROCEDURE GetPrice(IN Vendor CHAR(20),IN Pid INT,OUT price DECIMAL(10,3)LANGUAGE SQL BEGIN IF Vendor=Vendor 1 THEN SET price=(SELECT ProdPrice FROM V1 WHERE Id=Pid);ELSE IF Vendor=Vendor 2 THEN SET price=(SELECT Price FROM V2 W

    32、HERE Pid=GetPrice.Pid);END IF;END 单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级25单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级25CREATE FUNCTION GetPrice(Vendor CHAR(20),PId INT)RETURNS DECIMAL(10,3)LANGUAGE SQL BEGIN DECLARE price DECIMAL(10,3);IF Vendor=Vendor 1 THEN SET price=(SELECT ProdPrice FROM V1 WHE

    33、RE Id=Pid);ELSE IF Vendor=Vendor 2 THEN SET price=(SELECT Price FROM V2 WHERE Pid=GetPrice.Pid);END IF;RETURN price;END 单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级26单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级26使用用于临时数据的临时表 临时表的操作通常比对常规表的操作快 临时表的创建不会涉及向目录中插入项,并且临时表的使用也不会涉及对目录的访问;因此,不会有目录争用问题。临时表只能由创建它们的应

    34、用程序访问,因此在其操作中不会涉及锁定问题。如果指定了 NOT LOGGED 选项,则不对临时表上的操作记录日志(当然,这样就不可能回滚更改)。因此,如果您的存储过程生成了大量临时数据,并只打算在数据库的一个会话中使用它们,那么请将这些数据存储进临时表,这样可以显著地改进性能。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级27单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级27临时表注意事项 分布键DECLARE GLOBAL TEMPORARY TABLE SESSION.WJL_TMP_M(TIME_ID INTEGER

    35、,AREA_ID INTEGER,USR_ID BIGINT,SMART_CODE VARCHAR(20),SM_CNT INT)PARTITIONING KEY(USR_ID)USING HASHINGWITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED IN TBS_USR_TMP;索引CREATE INDEX SESSION.IDX0803110001 ON SESSION.WJL_TMP_M(USR_ID,SMART_CODE)单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级28单击此处编辑母版标题样式 单击此

    36、处编辑母版文本样式 第二级 第三级 第四级 第五级28表空间的选择 小表尽量放在单分区的表空间上,避免查询时的广播 维表、参数表、日志表、小数量的数据表最好放在单分区的表空间上单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级29单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级29主键 主键用整型会极大的提高查询效率,而字符型的比较开销要比整型的比较开销大很多,用字符型数据作主键会使数据插入、更新与查询的效率降低。数据量小的时候这点降低可能不会被注意,可是当数据量大的时候,小的改进也能够提高系统的响应速度。单击此处编辑母版标题样

    37、式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级30单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级30distinct 使用distinct是为了保证在结果集中不出现重复值,但是distinct会产生一张工作表,并进行排序来删除重复记录,这会大大增加查询和I/O的操作次数。因此应当避免使用distinct关键字。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级31单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级31负逻辑 负逻辑如!=、not in等,都会导致DB2用表扫描来完成

    38、查询。当表较大时,会严重影响系统性能,可以用别的操作来代替。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级32单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级32选择数据类型对于比较短的列,尽量使用定长的CHAR而不是变长的VARCHAR。虽然,当数据的长度参差不齐时,VARCHAR可以节省数据库存储空间,但是系统需要花费额外的开销去检查每个数据的长度。尽量使用VARCHAR或VARGRAPHIC而不是LONG VARCHAR或LONG VARGRAPHIC。VARCHAR列和LONG VARCHAR列的最大长度差不多,基本

    39、一致,VARCHAR列的最大长度是32672字节,LONG VARCHAR列的最大长度是32700字节;同样地,VARGRAPHIC列和LONG VARGRAPHIC列的最大长度也相仿,VARGRAPHIC是16336字节,LONG VARGRAPHIC是16350字节。对于LONG VARCHAR列和LONG VARGRAPHIC列有一些限制,比如,这两列中的数据不能存储在数据库缓冲池中。如果不需要小数部分,则尽量使用整数(SMALLINT,INTEGER,BIGINT)而不是浮点数(REAL或DOUBLE)或十进制数(DECIMAL)。比较而言,整数的处理成本要廉价得多。尽量使用日期-时间

    40、(DATE,TIME,TIMESTAMP)而不是字符(CHAR)。日期-时间数据类型会占用较少的数据库存储空间,而且,对于日期-时间数据类型的变量,我们还可以利用系统提供的一些内置函数(如YEAR,MONTH)对其进行计算、转换等处理,一般来说,内置函数要比我们手工编写的函数在性能、效率上都要高一些。尽量使用数字的数据类型而不是字符的数据类型。单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级33单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级33单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级

    41、34单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级34单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级35单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级35日志满 系统提示“虚拟资源不足”判断日志满的应用 根据db2diag.log 快照 Db2 get snapshot for db on dbname|grep I old 释放日志单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级36单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第

    42、四级 第五级36表解锁 SQL0668N Operation not allowed for reason code 3 on table Db2 load from/dev/null of del terminate into tabschema.tabname单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级37单击此处编辑母版标题样式 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级37 SQL0668N 由于表TR2ADMIN.DIM_APP_CUST_TYP上的原类码为1,所以不充许操作。SQLSTATE=57016 Db2 SET INTEGRITY FOR SALES_SUMMARY IMMEDIATE CHECKED;

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[计算机]DB2数据库优化课件.ppt
    链接地址:https://www.163wenku.com/p-3515558.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库