DB2基础知识

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

DB2基础知识■目标DB2基本概念索引简介DB2应用的基本概念DB2环境介绍DB2编码规范DB2相关工具使用■关系型数据库-DB2系统架构示意OS/390CICSDB2TSODB2是OS390中的一个子系统■DB2子系统在OS/390操作系统上可同时运行多个DB2子系统,每个子系统对应一套自己的地址空间,每个DB2子系统下包含了一整套系统文件、一套系统数据库和用户定义的多个应用数据库BSDSACTIVELOGARCHIVELOG系统数据库应用数据库■DB2ObjectDB2SUBSYSTEMCATALOGDIRECTORYOTHERSYSTEMOBJECTSDATABASE1TABLESPACES1TABLESPACES2TABLE1TABLE2.etc.INDEX1INDEX2.etc.VIEW1VIEW2VIEW3.etcDATABASE2.etc.STORAGEGROUP1VOLUME1VOLUME2STORAGEGROUP2VOLUME3■DB2Objects概述CATALOG:DB系统定义信息DIRECTORY:DB系统管理信息ACTIVELOGANDARCHIVELOG:日志和存档日志DATABASE:逻辑数据库定义TABLESPACES:定义数据库表的物理存放STORAGEGROUP:定义物理卷空间分配TABLE:关系数据库的基本表INDEX:建立在TABLE上的索引VIEW:视图,建立在TABLE上的虚表■DataBase一系列DB2数据库的组织和结构称为DATABASE;是tables和相关indexes的最终集合,也是用于存放所有TABLESPACE,INDEXSPACE的区间名称DATABASETABLESPACETABLEINDEXSPACEINDEX■STOGROUPSTORAGEGROUP一组VOLUME的集合,在定义TABLESPACE和INDEXSPACE时指定IndexSpaceSTOGROUPTableSpaceTableSpaceTableSpaceIndexSpaceIndexSpace■TABLESPACE存放一个或多个TABLE内容的一个或多个DATASET,对应具体的VSAM文件,指定DATABASE和STORAGEGROUP,TS由大小相同的PAGE组成,缺省值为4KTableTableTableTABLESPACEVSAMLINEARDATASET■页Page一个TABLESPACE由有连续编号的pages组成。在DB2的中,PAGE是最小的存储单元,也是I/O的基本单位,可以逻辑地划分为4K、8K、16K、32K;TABLE中的一行(ROW)必须存放在单个PAGE中,一个PAGE中可以存放多行在资源管理中,Tablespaces,table,page或row都可以作为资源锁的单元■SimpleTableSpace能包含多个表,但是各个表的记录不是分开存放的,一个PAGE可包含多个表的记录要SCAN一个table的所有记录需要对整个tablespace进行扫描;当一个表被DROP掉后,它所占用的空间不会立即被释放掉;如果申明LOCKTABLE,整个TABLESPACE会被锁住。pagepagepageTB1TB2pagepagepageSimpleTablespace■SegmentedTableSpace一个SegmentedTableSpace可包含多个表,DB2以SEGMENT为单位为表分配空间,每个段只存放同一个表,但一个表所在的多个SEGMENT不一定是连续的。对一个table进行scan时,只有该table所在的segment会被scan;当对一个table加锁时,其它表不会受影响;当一个table被drop后,它之前所占的空间会立即释放pagepagepageTB1TB2pagepagepageSegmentedTablespace■PatitionedTableSpace一个PartitionedTableSpace只包含一个表(partitionedtable)根据INDEX的范围将表的存储空间划分成几个部分,每部分对应一个物理的数据集.这个index叫做该表的partitionedindex,一个partitionedtable对应唯一的partitionedindex,允许SQL和utilities同时访问不同的partitionspagepagepagepagepagepageTBPatitionedTablespace■分区索引PatitionedIndexpagepagepagepagepagepagePatitionedTablespace分区索引TB分区索引分区索引Patitionedindex0000—0299:北京地区0300—0399:天津地区0400—0499:河北地区■分区表空间某个分区可以STOP,不影响其它分区上例中,STOP0300—0399:天津地区有交易查询:WHEREZONENO=200因没有涉及到0300-0399分区,查询交易仍然可以成功■PARTITION表划分原则数据量过大的表(超过2G)并行批量程序涉及的表■并行批量并行批量程序处理的单元是批量单位,一个批量单位对应一个或多个地区,如果批量访问的表没有划分PARTITON,则在一个PAGE里会出现不同地区的数据(如下图):地区2地区3地区1PAGE2地区1地区3地区8PAGE3地区1地区2地区4PAGE1■并行批量情况一:处理地区1数据的批量程序开始运行,它请求获得PAGE1的数据,对PAGE1加了X-LOCK,这时处理地区2或地区4数据的程序对PAGE1的请求处于等待状态,直至PAGE1的X-LOCK被释放掉.而批量程序一般是多笔COMMIT一次,则处理地区2或地区4的程序很有可能发生等待超时。造成TIMEOUT。情况二:如果处理地区1数据的程序获得PAGE1并等待处理PAGE2的数据;同时处理地区2数据的程序获得PAGE2并等待处理PAGE1的数据,则此时会出现DEADLOCK。对并行批量程序涉及的表进行PARTITON划分,使不同地区的数据按照一定区间分开存放可避免上述两种情况(TIMEOUT和DEADLOCK)的发生。■PARTITIONTABLESPACE的缺点PARTITIONINDEX要通过DROPTABLESPACE才能被DROP掉;PARTITIONINDEX中定义的VALUES(区间范围)不能被更改。若要更改,则需重建整个TABLESPACEPARTITION数目不能更改,若要更改,则需重建整个TABLESPACE.因此在定义PARTITION表时应估算好PARTITION的数目,最大可定义254个。一个PATITIONTABLESPCE对应多个数据文件,PARTITION的数目越多的话,我们在访问数据时打开的DATASET就会越多,这一方面会给OPEN/CLOSE动作带来额外的CPU开销,另一方面也需要额外的VIRTUALSTORAGE。再则,数据库在建立时有个参数DSMAX指定该数据库可同时打开的DATASET的数量,同时打开的DATASET过多,可能达到这个限制。需要增大BUFFERPOOL,SORTPOOL,WORKFILE来支持并行。■DB2数据库的基本建立过程建立存储组(StorageGroup);建立逻辑数据库(DataBase);定义表空间(Tablespace);建立表(Table);在表的基础上建立索引(Index);装载、处理数据(Load/Insert);■建立索引的优点一般来说,建立INDEX有以下益处:提高查询效率;建立唯一索引以保证数据的唯一性;设计INDEX避免排序。■建立索引的缺点而INDEX的维护又有以下开销:叶节点的‘分裂’消耗;INSERT、DELETE和UPDATE操作在INDEX上的维护开销;有存储要求;其他日常维护的消耗:对恢复的影响,重组的影响。■需要建立索引的情况为了建立分区数据库的PATITIONINDEX必须建立为了保证数据约束性需要而建立的INDEX必须建立。为了提高查询效率,则考虑建立(是否建立要考虑相关性能及维护开销)考虑在使用UNION,DISTINCT,GROUPBY,ORDERBY等字句的列上加索引■RID索引的叶子中的指针被称为“记录RID”或RID每个RID是表空间的页号和数据值行指针的组合,由RID可以准确地找到表中对应的记录。当DB2通过索引来查找数据时,会先查找索引,得到需要查询记录的RID,然后根据RID访问数据页■群集索引与非群集索引PatitionedIndex是ClusterIndex数据页数据页数据页数据页索引数据群集索引ClusterIndex数据页数据页数据页数据页非群集索引NonclusterIndex■ClusterRatio索引的群集化有一个指标来表示,即ClusterRatio群集索引的ClusterRatio都较高。一般来说,某个表的几个索引,定义较重要的那个为ClusterIndex。所有索引的ClusterRatio值都存储在系统表中,位于SYSIBM.SYSINDEXES,可以用下列语句将其查出:SELECT*FROMSYSIBM.SYSINDEXES某个表几个索引的ClusterRatio一般相差较大数据页中的数据只有一种排列方式,不可能符合所有索引的排列。■FilterFactor根据某个列的条件可以过滤掉出来的记录数,称为过滤因子FilterFactor对上例,编目统计信息中FIRSTKEYCAR=20,DB2认为地区号有20个,根据地区号可以过滤出来1/20的记录,则ZONENO=?条件的过滤因子就是1/20编目信息不足时DB2会采用默认值过滤因子越小越好where条件中用AND时小的过滤因子放在前面,可以减少后面条件处理的记录数目用OR连接时恰好相反,过滤因子大的放在前面,让DB2先尽可能多取出数据■预取PrefetchNORMALREAD:当读取一个或少数几个连续的页时,DB2采用NORMALREAD方式,每次传输的单位是一个页PREFETCH:DB2通过一次异步的I/O操作,将若干数据页读入BUFFERPOOL。减少I/O次数,提高I/O效率,通过CUP与I/O的异步处理,节约处理时间■顺序预取SEQUENTIALPREFETCH用于读取连续的页既可用于在TABLESPACESCAN中访问连续的数据页,也可用于在INDEXSCAN中访问连续的数据页和索引页页单个I/O页页页页页页页页页页页页页页页页单个I/O常规I/O一次发生一页顺序预取单个I/O一次最多获得32页页页页页页页页页页页页页页页页页■列表预取ListPrefetch根据单个索引来访问数据且ClusterRatio不高;或根据多个索引访问如按索引序顺来读TableSpace,如图,可能读数据页1-3-2-4-1-3……造成重复读某一数据页先将索引RID排序,产生listofRID按listofRID顺序读页,不会重读数据页1数据页2数据页3数据页4■可索引谓词IndexablePredicate所有的可索引谓词都是阶段1谓词,但反之却不是这样我们常用的可索引谓词有COLUMN_NAMEoperatorvalueCOLUMN_NAMEBETWEENval1ANDval2COLUMN_NAMEIN(listofcolumns)其中的operator我们可以用=、=、=、、来代替,而不能用来代替■匹配索引扫描MATCHINGINDEXSCAN谓词指定在一个索引的全部列,或是从索引第一个列开始并在该索引中连续的列上区配的索引字段前几列用等于或IN,最后一个可以是范围谓词(,,=,=)MATCHINGCOLUMNS:匹配的字段数

1 / 58
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功