[计算机]DB2数据库优化课件

上传人:鲁** 文档编号:567479730 上传时间:2024-07-20 格式:PPT 页数:37 大小:412.02KB
返回 下载 相关 举报
[计算机]DB2数据库优化课件_第1页
第1页 / 共37页
[计算机]DB2数据库优化课件_第2页
第2页 / 共37页
[计算机]DB2数据库优化课件_第3页
第3页 / 共37页
[计算机]DB2数据库优化课件_第4页
第4页 / 共37页
[计算机]DB2数据库优化课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《[计算机]DB2数据库优化课件》由会员分享,可在线阅读,更多相关《[计算机]DB2数据库优化课件(37页珍藏版)》请在金锄头文库上搜索。

1、单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20241单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20241DB2数据库优化经分项目组:严辉单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20242单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20242DB2统计信息保持最新如果没有存储在DB2系统目录中的统计信息,优化器在优化任何事物时都会遇到困难。这些统计信息向优化器提供了与正在被优化的SQL语句将要访问的表状态相关的信息。存储在系统目录中的统计

2、信息的类型包括:关于表表的信息,包括总的行数、关于压缩的信息和总页数;关于列列的信息,包括列的离散值的数量和存储在列中的值的分布范围;关于表空间表空间的信息,包括活动页面的数量;索引索引的当前状态,包括是否存在索引、索引的组织(叶子页的数量和级别的数量)、索引键的离散值的数量以及是否群集索引;关于表空间和索引节点组或分区的信息。当执行RUNSTATS或RUNSTATISTICS实用程序时,统计信息就会填充DB2系统目录。您可以从控制中心(ControlCenter)、批处理作业或通过使用命令行处理器来调用该实用程序。一定要确保在适当的时候积累统计信息,尤其是在生产环境中。单击此处编辑母版标题样

3、式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20243单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20243RUNSTATS语法表:表: db2RUNSTATSONTABLE表名索引:索引: db2RUNSTATSONTABLE表名FORINDEXESALL表和索引:表和索引: db2RUNSTATSONTABLE表名ANDINDEXESALL增强的统计信息增强的统计信息表:表: db2RUNSTATSONTABLE表名WITHDISTRIBUTION索引:索引: db2RUNSTATSONTABLE表名FORDETAILEDINDEXES

4、ALL表和索引:表和索引: db2RUNSTATSONTABLE表名WITHDISTRIBUTIONANDDETAILEDINDEXESALL常用例子常用例子RUNSTATSONTABLETR1ADMIN.MID_GSM_VOICE_CDR_000ONKEYCOLUMNSWITHDISTRIBUTIONONALLCOLUMNSANDSAMPLEDDETAILEDINDEXESALLALLOWREADACCESSTABLESAMPLEBERNOULLI(1)REPEATABLE(1)SETPROFILENONE单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20

5、244单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20244分布键分布键分布键是一列(或一组列),用来确定存储特定数据行的数据库分区。分布键是使用 CREATE TABLE 语句在表上定义的。如果没有为分布在数据库分区组中的多个数据库分区中的表空间中的表定义分布键,在缺省情况下将会根据主键的第一列创建分布键。若未指定主键,则缺省分布键是在该表中定义的第一个非长型字段列。(长型包括所有长型数据类型和所有大对象(LOB)数据类型)。如果正在与单一分区数据库分区组相关的表空间中创建表,且您希望有分布键,则必须显式定义该分布键。缺省情况下,不会创建该分布键。当定义

6、分布键时,应该考虑以下几点:不支持创建只包含长型数据类型(LONGVARCHAR、LONGVARGRAPHIC、BLOB、CLOB或DBCLOB)的多分区表。不能改变分布键定义。分布键应该包括最频繁连接的列。分布键应该由经常参与GROUPBY子句的列组成。任何唯一键或主键必须包含所有分布键列。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20245单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20245索引索引是行位置的列表,按一个或多个指定列的内容来排序。索引通常用于加速对表的访问。创建索引的一些准则包括:在适当地方定义

7、主键和唯一索引。创建关于查询用来连接表(Join谓词)的任何列的索引。创建关于基于常规基础从中搜索特定值的任何列的索引。创建关于通常用在ORDERBY子句中的列的索引。确保使用了仅检索您需要的数据的谓词。例如,确保谓词的选择性值表示您想要返回的那部分表。当创建多列索引时,索引的第一列应该为查询中的谓词最常用的那一列。确保索引造成的磁盘和更新维护的开销不会太高。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20246单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20246根据查询所使用的列建立多列索引根据查询所使用的列建立多

8、列索引对于一个特定的查询,可以为某一个表所有出现在查询中的列建立一个联合索引,包括出现在select子句和条件语句中的列。但简单的建立一个覆盖所有列的索引并不一定能有效提高查询,因为在多列索引中列的顺序是非常重要的。这个特性是由于索引的B+树结构决定的。一般情况下,要根据谓词的选择度来排列索引中各列的位置,选择度大的谓词所使用的列放在索引的前面,把那些只存在与select子句中的列放在索引的最后。selectadd_datefromtemp.customerwherecity=WASHINGTONandcntry_code=USA;在temp.customer上建立(city,cntry_co

9、de,add_date)索引。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20247单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20247根据条件语句中的谓词的选择度创建索引根据条件语句中的谓词的选择度创建索引建立索引需要占用数据库的存储空间,所以需要在空间和时间性能之间进行权衡。很多时候,只考虑那些在条件子句中有条件判断的列上建立索引会也会同样有效,同时节约了空间。1.selectcount(*)fromtemp.customerwherecity=WASHINGTONandcntry_code=USA;2.sele

10、ctcount(*)fromtemp.customerwherecity=WASHINGTON;3.selectcount(*)fromtemp.customerwherecntry_code=USA;Results:1.14042.14073.128700选择度越大,过滤掉的记录越多,返回的结果集也就越小。从清单6的结果可以看到,第二个查询的选择度几乎有和整个条件语句相同。因此可以直接建立单列索引(city),其性能与索引(city,cntry_code,add_date)具有相差不多的性能。从下表中可以看到单列索引(city)具有更加有效的性能空间比,也就是说占有尽可能小的空间得到尽可能高

11、的查询速度。索引索引 查询计划总代价索引大小查询计划总代价索引大小cust_i1(city,cntry_code,add_date) 28.94timerons19.52Mcust_i3(city) 63.29timerons5.48M单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20248单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20248避免在建有索引的列上使用函数避免在建有索引的列上使用函数这是一个很简单的原则。如果在建有索引的列上使用函数,由于函数的单调性不确定,函数的返回值和输入值可能不会一一对应,就可能存在

12、索引中位置差异很大的多个列值可以满足带有函数的谓词条件,因此DB2优化器将无法进行MatchingIndexScan,更坏的情况下可能会导致直接进行表扫描。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20249单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20249在那些需要被排序的列上创建索引在那些需要被排序的列上创建索引这里的排序不仅仅指orderby子句,还包括distinct和groupby子句,他们都会产生排序的操作。由于索引本身是有序的,在其创建过程中已经进行了排序处理,因此在应用这些语句的列上创建索引会降低

13、排序操作的代价。这种情况一般针对于没有条件语句的查询。如果存在条件语句,DB2优化器会首先选择出满足条件的纪录,然后才对中间结果集进行排序。对于没有条件语句的查询,排序操作在总的查询代价中会占有较大比重,因此能够较大限度的利用索引的排序结构进行查询优化。此时可以创建单列索引,如果需要创建联合索引则需要把被排序的列放在联合索引的第一列。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202410单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202410合理使用合理使用 include 关键词创建索引关键词创建索引include

14、 只能用在创建唯一性索引中。只能用在创建唯一性索引中。selectcust_namefromtemp.customerwherecust_numbetween0007000000and0007200000可以在cust_num和cust_name上建立联合索引来提高查询性能。但是由于cust_num是主键,可以使用include关键字创建唯一性索引:createuniqueindextemp.cust_i7ontemp.customer(cust_num)include(cust_name)使用include后,cust_name列的数据将只存在于索引树的叶子节点,并不存在于索引的关键字中。这

15、种情况下,使用带有include列的唯一索引会带来优于联合索引的性能,因为唯一索引能够避免一些不必要的操作,如排序。一般情况下,当查询的where子句中存在主键的谓词我们就可以创建带有include列的唯一索引,形成纯索引访问来提高查询性能。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202411单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202411指定索引的排序属性指定索引的排序属性selectmax(add_date)fromtemp.employeecreateindextemp.employee_i1onte

16、mp.employee(add_date)这里存在一个误区,大家可能认为既然查询里要取得的是add_date的最大值,而我们又在add_date上建立了一个索引,优化器应该知道从索引树中直接去寻找最大值。但是实际情况并非如此,因为创建索引的时候并没有指定排序属性,默认为ASC升序排列,DB2将会扫描整个索引树的叶子节点取得所有值后,然后取其最大。我们可以通过设置索引的排序属性来提高查询性能。createindextemp.employee_i1ontemp.employee(add_datedesc)对于降序排列的索引,DB2不需要扫描整个索引数的叶子节点,因为第一个节点便是最大的。我们同样可

17、以使用ALLOWREVERSESCANS来指定索引为双向扫描,具有和DESC近似的查询性能。ALLOWREVERSESCANS可以被认为是ASC和DESC的组合,只是在以后数据更新的时候维护成本会相对高一些。如果无法改变索引的排序属性,但是我们具有额外的信息,该公司每个月都会有新员工入职,那么这个查询就可以改写成:selectmax(add_date)fromtemp.employeewhereadd_datecurrenttimestamp-1month这样通过限定一个查询范围也会有效地提高查询性能。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/20241

18、2单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202412谓词谓词用户应用程序使用查询语句从数据库请求一组行,该查询语句指定要作为结果集返回的特定行的限定词。这些限定符通常出现在查询的 WHERE 子句。这种限定符称为谓词。 可以将谓词分组为四种类别,按如何在求值过程中使用该谓词以及何时使用它来确定这些类别。这些类别列示如下,按最佳性能到最差性能的顺序排列: 范围定界谓词 索引控制谓词 数据控制谓词 残留谓词 单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202413单击此处编辑母版标题样式单击此处编辑母版文本样式第二级

19、第三级第四级第五级7/20/202413DB2组件和谓词单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202414单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202414组件简介关系数据服务(RDS)从应用程序那里接收到SQL请求,并返回结果集;除了剩余谓词外,RDS将所有谓词都发送给数据管理服务(DMS);剩余谓词由RDS进行评估。DMS评估数据参数谓词。如果SELECT列表中存在一些不能由索引搜索进行评估的列,那么,DMS就会直接扫描数据页。索引管理器从DMS那里接收、评估范围界定谓词和索引参数谓词,然后,将数据页的

20、行标识符(RID)返回给DMS。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202415单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202415谓词类型谓词类型特征特征谓词类型谓词类型范围定界范围定界索引控制索引控制数据控制数据控制残留残留减少索引I/O是否否否减少数据页I/O是是否否减少内部传送的行数是是是否减少合格行的数目是是是是单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202416单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202416

21、范围定界范围定界范围定界谓词限制索引扫描的范围。它们提供索引搜索的开始和停止键值。范例:、INDEXIX1:NAMEASC,DEPTASC,MGRDESC,SALARYDESC,YEARSASC、WHERENAME=:hv1ANDDEPT=:hv2ANDYEARS:hv5前两个谓词(NAME=:hv1和DEPT=:hv2)是范围定界谓词,而YEARS:hv5是索引控制谓词。优化器在对这些谓词求值时使用索引数据而不是读取基本表。这些索引控制谓词减小需要从表中读取的行集,但它们不影响访问的索引页数。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202417单击此

22、处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202417索引控制索引控制索引控制谓词不能限制搜索范围,但可根据该索引来求值,因为在该谓词中涉及到的列是索引键的一部分。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202418单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202418数据控制数据控制索引管理器不能求值但数据管理服务可以求值的谓词称为数据控制谓词。这些谓词通常需要访问表中的单独行。如果需要,“数据管理服务”检索对该谓词求值需要的列以及任何其他列以满足 SELECT 列表中不能从该

23、索引获取的列。通常,这种谓词需要从基本表中存取个别行,如果需要的话,数据管理服务还会提取需要的列来评估该谓词。例如,假设索引定义在表project的projno列上,而不是deptno列上,执行下面的查询:SELECT projno,projname,repemp FROM projectWHEREdeptno=D11ORDER BY projno谓词“deptno=D11”是数据参数谓词,因为没有索引定义在deptno列上,必须存取基本表来评估该谓词。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202419单击此处编辑母版标题样式单击此处编辑母版文本样式

24、第二级第三级第四级第五级7/20/202419残留谓词残留谓词残留谓词比访问表需要更多的 I/O 成本。它们可具有下列特征: 使用相关子查询 使用量化子查询,这些子查询包含 ANY、ALL、SOME 或 IN 子句 读取 LONG VARCHAR 或 LOB 数据,该数据存储在与表分开的文件中剩余谓词是用关系数据服务(RDS)来进行评估的,而且,它在这四类谓词中成本最昂贵。由于相对范围界定谓词和索引参数谓词来说,剩余谓词和数据参数谓词的成本比较高,所以,我们应该尽可能地限制范围界定谓词和索引参数谓词界定的行数。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/2

25、02420单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202420在只使用一条语句即可做到时避免使用多条语句INSERTINTOtab_compVALUES(item1,price1,qty1);INSERTINTOtab_compVALUES(item2,price2,qty2);INSERTINTOtab_compVALUES(item3,price3,qty3);INSERTINTOtab_compVALUES(item1,price1,qty1),(item2,price2,qty2),(item3,price3,qty3);SETA=expr1;

26、SETB=expr2;SETC=expr3;VALUESexpr1,expr2,expr3INTOA,B,C;单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202421单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202421从多个SQL语句到一个SQL表达式SQL语言提供了两类条件构造:过程型(IF和CASE语句)和函数型(CASE表达式)。在大多数环境中,可使用任何一种构造来表达计算,到底使用哪一种只是喜好问题。但是,使用CASE表达式编写的逻辑不但比使用CASE或IF语句编写的逻辑更紧凑,而且更有效。IF(Price

27、=MaxPrice)THENINSERTINTOtab_comp(Id,Val)VALUES(Oid,Price);ELSEINSERTINTOtab_comp(Id,Val)VALUES(Oid,MaxPrice);ENDIF;INSERTINTOtab_comp(Id,Val)VALUES(Oid,CASEWHEN(Price=MaxPrice)THENPriceELSEMaxPriceEND);避免过程层和数据流层之间的上下文切换单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202422单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级

28、第五级7/20/202422谓词中的行表达式谓词比较已得到扩展,可支持将一组值(称为行表达式)与另一组值进行比较。值比较SELECT*FROMt1WHERE(c1,c2,SUBSTR(c3,1,2)=(10,c4,SQ)SELECT*FROMt1WHEREc1=10ANDc2=c4ANDSUBSTR(c3,1,2)=SQ子查询SELECT*FROMt1WHERE(c1,c2,SUBSTR(c3,1,1)=(SELECTa,b,cFROMmytableWHEREd=t1.c4)单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202423单击此处编辑母版标题样式单

29、击此处编辑母版文本样式第二级第三级第四级第五级7/20/202423在无副作用的情况下,请使用SQL函数SQL过程和SQL函数是使用不同技术实现的。SQL过程中的查询是单独编译的,每个查询都成为包中的一个节。编译是在过程创建时进行的,直到重新创建过程或者直到重新绑定其相关的包时才重新编译这些查询。另一方面,SQL函数中的查询是一起编译的,就好象函数体是一个查询一样。每当编译一条使用SQL函数的语句时,也会对SQL函数进行编译。与SQL过程中所发生的情况不同,SQL函数中的过程语句与数据流语句是在同一个层中执行的。因此,每当控制从过程语句流向数据流语句或相反时,并不发生上下文切换。因为存在这些区

30、别,所以当给定的过程代码段作为函数实现时的执行速度通常比作为过程实现时要快。只是从数据库抽取数据而不执行任何更改时,请考虑使用只是从数据库抽取数据而不执行任何更改时,请考虑使用 SQL 函数而不是使用函数而不是使用 SQL 过程过程单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202424单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202424CREATEPROCEDUREGetPrice(INVendorCHAR(20),INPidINT,OUTpriceDECIMAL(10,3)LANGUAGESQLBEGINIFV

31、endor=Vendor1THENSETprice=(SELECTProdPriceFROMV1WHEREId=Pid);ELSEIFVendor=Vendor2THENSETprice=(SELECTPriceFROMV2WHEREPid=GetPrice.Pid);ENDIF;END单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202425单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202425CREATEFUNCTIONGetPrice(VendorCHAR(20),PIdINT)RETURNSDECIMAL(10

32、,3)LANGUAGESQLBEGINDECLAREpriceDECIMAL(10,3);IFVendor=Vendor1THENSETprice=(SELECTProdPriceFROMV1WHEREId=Pid);ELSEIFVendor=Vendor2THENSETprice=(SELECTPriceFROMV2WHEREPid=GetPrice.Pid);ENDIF;RETURNprice;END单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202426单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202426使用

33、用于临时数据的临时表临时表的操作通常比对常规表的操作快临时表的创建不会涉及向目录中插入项,并且临时表的使用也不会涉及对目录的访问;因此,不会有目录争用问题。临时表只能由创建它们的应用程序访问,因此在其操作中不会涉及锁定问题。如果指定了NOTLOGGED选项,则不对临时表上的操作记录日志(当然,这样就不可能回滚更改)。因此,如果您的存储过程生成了大量临时数据,并只打算在数据库的一个会话中使用它们,那么请将这些数据存储进临时表,这样可以显著地改进性能。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202427单击此处编辑母版标题样式单击此处编辑母版文本样式第二级

34、第三级第四级第五级7/20/202427临时表注意事项分布键DECLAREGLOBALTEMPORARYTABLESESSION.WJL_TMP_M( TIME_IDINTEGER,AREA_IDINTEGER,USR_IDBIGINT,SMART_CODEVARCHAR(20),SM_CNTINT)PARTITIONING KEY(USR_ID) USING HASHINGWITHREPLACEONCOMMITPRESERVEROWSNOTLOGGEDINTBS_USR_TMP;索引CREATEINDEXSESSION.IDX0803110001ONSESSION.WJL_TMP_M(USR

35、_ID,SMART_CODE)单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202428单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202428表空间的选择小表尽量放在单分区的表空间上,避免查询时的广播维表、参数表、日志表、小数量的数据表最好放在单分区的表空间上单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202429单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202429主键主键用整型会极大的提高查询效率,而字符型的比较开销要比整型的比较开销大很

36、多,用字符型数据作主键会使数据插入、更新与查询的效率降低。数据量小的时候这点降低可能不会被注意,可是当数据量大的时候,小的改进也能够提高系统的响应速度。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202430单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202430distinct使用distinct是为了保证在结果集中不出现重复值,但是distinct会产生一张工作表,并进行排序来删除重复记录,这会大大增加查询和I/O的操作次数。因此应当避免使用distinct关键字。单击此处编辑母版标题样式单击此处编辑母版文本样式第

37、二级第三级第四级第五级7/20/202431单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202431负逻辑负逻辑如!=、notin等,都会导致DB2用表扫描来完成查询。当表较大时,会严重影响系统性能,可以用别的操作来代替。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202432单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202432选择数据类型对于比较短的列,尽量使用定长的CHAR而不是变长的VARCHAR。虽然,当数据的长度参差不齐时,VARCHAR可以节省数据库存储空间,但是系

38、统需要花费额外的开销去检查每个数据的长度。尽量使用VARCHAR或VARGRAPHIC而不是LONGVARCHAR或LONGVARGRAPHIC。VARCHAR列和LONGVARCHAR列的最大长度差不多,基本一致,VARCHAR列的最大长度是32672字节,LONGVARCHAR列的最大长度是32700字节;同样地,VARGRAPHIC列和LONGVARGRAPHIC列的最大长度也相仿,VARGRAPHIC是16336字节,LONGVARGRAPHIC是16350字节。对于LONGVARCHAR列和LONGVARGRAPHIC列有一些限制,比如,这两列中的数据不能存储在数据库缓冲池中。如果不

39、需要小数部分,则尽量使用整数(SMALLINT,INTEGER,BIGINT)而不是浮点数(REAL或DOUBLE)或十进制数(DECIMAL)。比较而言,整数的处理成本要廉价得多。尽量使用日期-时间(DATE,TIME,TIMESTAMP)而不是字符(CHAR)。日期-时间数据类型会占用较少的数据库存储空间,而且,对于日期-时间数据类型的变量,我们还可以利用系统提供的一些内置函数(如YEAR,MONTH)对其进行计算、转换等处理,一般来说,内置函数要比我们手工编写的函数在性能、效率上都要高一些。尽量使用数字的数据类型而不是字符的数据类型。单击此处编辑母版标题样式单击此处编辑母版文本样式第二级

40、第三级第四级第五级7/20/202433单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202433单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202434单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202434单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202435单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202435日志满系统提示“虚拟资源不足”判断日志满的应用根据db2diag.log快照Db2gets

41、napshotfordbondbname|grepIold释放日志单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202436单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202436表解锁SQL0668NOperationnotallowedforreasoncode3ontableDb2loadfrom/dev/nullofdelterminateintotabschema.tabname单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202437单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级7/20/202437SQL0668N由于表TR2ADMIN.DIM_APP_CUST_TYP上的原类码为1,所以不充许操作。SQLSTATE=57016Db2 SET INTEGRITY FORSALES_SUMMARYIMMEDIATE CHECKED;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号