DB2基础知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LOG
BSDS
系统下包含了一整套系统文件、一套
系统数据库和用户定义的多个
系统 数据库
应用 数据库
应用数据库
■ DB2 Object
CATALOG
DB2 SUBSYSTEM
DIRECTORY OTHER SYSTEM OBJECTS
DATABASE 1
TABLE SPACES1
DATABASE2.etc.
■分区表空间
某个分区可以STOP,不影响其它分区
上例中,STOP 0300—0399:天津地区 有交易查询: WHERE ZONENO=200 因没有涉及到0300-0399分区,查询交易仍然可以成功
■ PARTITION表划分原则
数据量过大的表(超过2G) 并行批量程序涉及的表
■顺序预取 SEQUENTIAL PREFETCH
用于读取连续的页 既可用于在TABLE SPACE SCAN中访问连续的数 据页,也可用于在INDEX SCAN中访问连续的数 据页和索引页 页 页 页 页
页 页 页 页 页 页 页 页 页 页 页 页 页
单个I/O
单个I/O
页
页
页
页
页
页
页
页
TABLE SPACES2
STORAGE GROUP1 VOLUME1 VOLUME2
TABLE1
INDEX1 VIEW1
TABLE2. etc.
INDEX2.etc. VIEW2 VIEW3.etc STORAGE GROUP2 VOLUME3
■ DB2 Objects 概述
■ PARTITION TABLESPACE 的缺点
PARTITION INDEX要通过DROP TABLESPACE才能被DROP掉; PARTITION INDEX中定义的VALUES(区间范围)不能被更改。 若要更改,则需重建整个TABLESPACE PARTITION 数目不能更改,若要更改,则需重建整个 TABLESPACE.因此在定义PARTITION表时应估算好PARTITION 的数目,最大可定义254个。 一个PATITION TABLESPCE对应多个数据文件,PARTITION的 数目越多的话,我们在访问数据时打开的DATA SET就会越多, 这一方面会给OPEN/CLOSE动作带来额外的CPU开销,另一方面 也需要额外的VIRTUAL STORAGE。再则,数据库在建立时有个 参数DSMAX指定该数据库可同时打开的DATASET的数量,同时 打开的DATASET过多,可能达到这个限制。 需要增大 BUFFER POOL,SORT POOL,WORKFILE来支持并 行。
■ Simple TableSpace
page TB1 page TB2 page
page
能包含多个表,但是各个表 的记录不是分开存放的,一 个PAGE可包含多个表的记 录
page
page
Simple Tablespace
要SCAN一个table的所有 记录需要对整个 tablespace进行扫描; 当一个表被DROP掉后, 它所占用的空间不会立即 被释放掉; 如果申明LOCK TABLE, 整个TABLESPACE会被 锁住。
CATALOG : DB系统定义信息 DIRECTORY : DB系统管理信息 ACTIVE LOG AND ARCHIVE LOG:日志和存档日 志 DATABASE : 逻辑数据库定义 TABLESPACES : 定义数据库表的物理存放 STORAGE GROUP : 定义物理卷空间分配 TABLE : 关系数据库的基本表 INDEX : 建立在TABLE上的索引 VIEW : 视图,建立在TABLE上的虚表
DB2基础知识
■目标Байду номын сангаас
DB2基本概念 索引简介 DB2应用的基本概念 DB2环境介绍 DB2编码规范 DB2 相关工具使用
■关系型数据库-DB2
系统架构示意
CICS
DB2
TSO
OS/390
DB2是OS390中的一个子系统
■ DB2子系统
ARCHIVE LOG ACTIVE
在OS/390操作系统上可同时运行 多个DB2子系统,每个子系统对应 一套自己的地址空间,每个DB2子
页
页
页
页
页
页
页
页
常规I/O一次发生一页
顺序预取单个I/O一次最多获得32页
■列表预取 List Prefetch
根据单个索引来访问数据且Cluster Ratio不高; 或根据多个索引访问
如按索引序顺来读Table Space, 如图,可能读数据页 1->3->2->4->1->3…… 造成重复读某一数据页
一组VOLUME的集合, 在定义TABLESPACE和 INDEXSPACE时指定
STOGROUP
TableSpace TableSpace TableSpace
IndexSpace IndexSpace IndexSpace
■ TABLESPACE
存放一个或多个TABLE内容的一个或多个DATA SET,对应具体的 VSAM文件,指定DATABASE和STORAGE GROUP,TS由大小相同 的PAGE组成,缺省值为4K
■ Filter Factor
根据某个列的条件可以过滤掉出来的记录数, 称为过滤因子 Filter Factor
对上例,编目统计信息中FIRSTKEYCAR=20,DB2认 为地区号有20个,根据地区号可以过滤出来1/20的记录, 则ZONENO=? 条件的过滤因子就是1/20 编目信息不足时DB2会采用默认值 过滤因子越小越好 where条件中用AND时小的过滤因子放在前面,可以减 少后面条件处理的记录数目 用OR连接时恰好相反,过滤因子大的放在前面,让 DB2先尽可能多取出数据
数据页
数据页
数据页
数据页
数据页
数据
群集索引 Cluster Index
非群集索引 Noncluster Index
Patitioned Index是Cluster Index
■ Cluster Ratio
索引的群集化有一个指标来表示,即Cluster Ratio 群集索引的Cluster Ratio都较高。 一般来说,某个表的几个索引,定义较重要的那个为 Cluster Index。
■ DataBase
一系列DB2数据库的组织和结构称为DATABASE;是tables 和相关indexes的最终集合,也是用于存放所有 TABLESPACE,INDEX SPACE的区间名称
DATABASE
TABLESPACE INDEXSPACE
TABLE
INDEX
■ STOGROUP
STORAGE GROUP
■并行批量
并行批量程序处理的单元是批量单位,一个批量单位对应一个或多个地 区,如果批量访问的表没有划分PARTITON,则在一个PAGE里会出 现不同地区的数据(如下图):
地区1 地区2 地区4
地区2 地区3 地区1
地区1 地区3 地区8
PAGE1
PAGE2
PAGE3
■并行批量
情况一:处理地区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)的发生。
■需要建立索引的情况
为了建立分区数据库的PATITION INDEX必须 建立 为了保证数据约束性需要而建立的INDEX必须 建立。 为了提高查询效率,则考虑建立(是否建立 要考虑相关性能及维护开销) 考虑在使用UNION,DISTINCT,GROUP BY,ORDER BY等字句的列上加索引
■ RID
索引的叶子中的指针被称为“记录RID”或RID 每个RID是表空间的页号和数据值行指针的组 合,由RID可以准确地找到表中对应的记录。 当DB2通过索引来查找数据时,会先查找索引, 得到需要查询记录的RID,然后根据RID访问 数据页
■群集索引与非群集索引
索引
数据页
数据页
数据页
Patitioned Tablespace
■分区索引 Patitioned Index
分区 索引 分区 索引 分区 索引
0000—0299:北京地区
page
page
TB
page
page
Patitioned index
0300—0399:天津地区
page
page
0400—0499:河北地区
Patitioned Tablespace
所有索引的Cluster Ratio值都存储在系统表中,位于 SYSIBM.SYSINDEXES,可以用下列语句将其查出: SELECT * FROM SYSIBM.SYSINDEXES
某个表几个索引的Cluster Ratio一般相差较大
数据页中的数据只有一种排列方式,不可能符合所有索引的 排列。
一般来说,建立INDEX有以下益处:
提高查询效率; 建立唯一索引以保证数据的唯一性; 设计INDEX避免排序。
■建立索引的缺点
而INDEX的维护又有以下开销:
叶节点的‘分裂’消耗; INSERT、DELETE和UPDATE操作在INDEX上的 维护开销; 有存储要求; 其他日常维护的消耗:对恢复的影响,重组的影响。
■预取 Prefetch
NORMAL READ: 当读取一个或少数几个连续的 页时,DB2采用NORMAL READ方式,每次传输 的单位是一个页
PREFETCH: DB2通过一次异步的I/O操作,将若 干数据页读入BUFFER POOL。
减少I/O次数,提高I/O效率, 通过CUP与I/O的异步处理,节约处理时间
Segmented Tablespace
■ Patitioned TableSpace
page
page
一个Partitioned Table Space只包含一个表 (partitioned table)
TB
page
page
page
page
根据INDEX的范围将表 的存储空间划分成几个 部分,每部分对应一个 物理的数据集.这个index 叫做该表的partitioned index,一个partitioned table 对应唯一的 partitioned index,允许 SQL和utilities同时访问 不同的partitions
■ DB2 数据库的基本建立过程
建立存储组 ( Storage Group); 建立逻辑数据库 (DataBase); 定义表空间 (Tablespace); 建立表 (Table); 在表的基础上建立索引 (Index) ; 装载、处理数据 (Load/Insert);
■建立索引的优点
■ Segmented TableSpace
TB1
page
page
一个Segmented Table Space可包含多个表,DB2 以SEGMENT为单位为表分 配空间,每个段只存放同一 个表,但一个表所在的多个 SEGMENT不一定是连续的。
page TB2 page
page
page
对一个table进行scan时, 只有该table所在的 segment会被scan; 当对一个table加锁时,其 它表不会受影响; 当一个table被drop后,它 之前所占的空间会立即释 放
TABLESPACE Table Table Table
VSAM LINEAR DATASET
■页 Page
一个TABLESPACE由有连续编号的pages组成。 在DB2的中,PAGE是最小的存储单元,也是I/O的基 本单位,可以逻辑地划分为4K、8K、16K、32K;
TABLE中的一行(ROW)必须存放在单个PAGE中, 一个PAGE中可以存放多行 在资源管理中,Tablespaces, table, page或row 都 可以作为资源锁的单元
BSDS
系统下包含了一整套系统文件、一套
系统数据库和用户定义的多个
系统 数据库
应用 数据库
应用数据库
■ DB2 Object
CATALOG
DB2 SUBSYSTEM
DIRECTORY OTHER SYSTEM OBJECTS
DATABASE 1
TABLE SPACES1
DATABASE2.etc.
■分区表空间
某个分区可以STOP,不影响其它分区
上例中,STOP 0300—0399:天津地区 有交易查询: WHERE ZONENO=200 因没有涉及到0300-0399分区,查询交易仍然可以成功
■ PARTITION表划分原则
数据量过大的表(超过2G) 并行批量程序涉及的表
■顺序预取 SEQUENTIAL PREFETCH
用于读取连续的页 既可用于在TABLE SPACE SCAN中访问连续的数 据页,也可用于在INDEX SCAN中访问连续的数 据页和索引页 页 页 页 页
页 页 页 页 页 页 页 页 页 页 页 页 页
单个I/O
单个I/O
页
页
页
页
页
页
页
页
TABLE SPACES2
STORAGE GROUP1 VOLUME1 VOLUME2
TABLE1
INDEX1 VIEW1
TABLE2. etc.
INDEX2.etc. VIEW2 VIEW3.etc STORAGE GROUP2 VOLUME3
■ DB2 Objects 概述
■ PARTITION TABLESPACE 的缺点
PARTITION INDEX要通过DROP TABLESPACE才能被DROP掉; PARTITION INDEX中定义的VALUES(区间范围)不能被更改。 若要更改,则需重建整个TABLESPACE PARTITION 数目不能更改,若要更改,则需重建整个 TABLESPACE.因此在定义PARTITION表时应估算好PARTITION 的数目,最大可定义254个。 一个PATITION TABLESPCE对应多个数据文件,PARTITION的 数目越多的话,我们在访问数据时打开的DATA SET就会越多, 这一方面会给OPEN/CLOSE动作带来额外的CPU开销,另一方面 也需要额外的VIRTUAL STORAGE。再则,数据库在建立时有个 参数DSMAX指定该数据库可同时打开的DATASET的数量,同时 打开的DATASET过多,可能达到这个限制。 需要增大 BUFFER POOL,SORT POOL,WORKFILE来支持并 行。
■ Simple TableSpace
page TB1 page TB2 page
page
能包含多个表,但是各个表 的记录不是分开存放的,一 个PAGE可包含多个表的记 录
page
page
Simple Tablespace
要SCAN一个table的所有 记录需要对整个 tablespace进行扫描; 当一个表被DROP掉后, 它所占用的空间不会立即 被释放掉; 如果申明LOCK TABLE, 整个TABLESPACE会被 锁住。
CATALOG : DB系统定义信息 DIRECTORY : DB系统管理信息 ACTIVE LOG AND ARCHIVE LOG:日志和存档日 志 DATABASE : 逻辑数据库定义 TABLESPACES : 定义数据库表的物理存放 STORAGE GROUP : 定义物理卷空间分配 TABLE : 关系数据库的基本表 INDEX : 建立在TABLE上的索引 VIEW : 视图,建立在TABLE上的虚表
DB2基础知识
■目标Байду номын сангаас
DB2基本概念 索引简介 DB2应用的基本概念 DB2环境介绍 DB2编码规范 DB2 相关工具使用
■关系型数据库-DB2
系统架构示意
CICS
DB2
TSO
OS/390
DB2是OS390中的一个子系统
■ DB2子系统
ARCHIVE LOG ACTIVE
在OS/390操作系统上可同时运行 多个DB2子系统,每个子系统对应 一套自己的地址空间,每个DB2子
页
页
页
页
页
页
页
页
常规I/O一次发生一页
顺序预取单个I/O一次最多获得32页
■列表预取 List Prefetch
根据单个索引来访问数据且Cluster Ratio不高; 或根据多个索引访问
如按索引序顺来读Table Space, 如图,可能读数据页 1->3->2->4->1->3…… 造成重复读某一数据页
一组VOLUME的集合, 在定义TABLESPACE和 INDEXSPACE时指定
STOGROUP
TableSpace TableSpace TableSpace
IndexSpace IndexSpace IndexSpace
■ TABLESPACE
存放一个或多个TABLE内容的一个或多个DATA SET,对应具体的 VSAM文件,指定DATABASE和STORAGE GROUP,TS由大小相同 的PAGE组成,缺省值为4K
■ Filter Factor
根据某个列的条件可以过滤掉出来的记录数, 称为过滤因子 Filter Factor
对上例,编目统计信息中FIRSTKEYCAR=20,DB2认 为地区号有20个,根据地区号可以过滤出来1/20的记录, 则ZONENO=? 条件的过滤因子就是1/20 编目信息不足时DB2会采用默认值 过滤因子越小越好 where条件中用AND时小的过滤因子放在前面,可以减 少后面条件处理的记录数目 用OR连接时恰好相反,过滤因子大的放在前面,让 DB2先尽可能多取出数据
数据页
数据页
数据页
数据页
数据页
数据
群集索引 Cluster Index
非群集索引 Noncluster Index
Patitioned Index是Cluster Index
■ Cluster Ratio
索引的群集化有一个指标来表示,即Cluster Ratio 群集索引的Cluster Ratio都较高。 一般来说,某个表的几个索引,定义较重要的那个为 Cluster Index。
■ DataBase
一系列DB2数据库的组织和结构称为DATABASE;是tables 和相关indexes的最终集合,也是用于存放所有 TABLESPACE,INDEX SPACE的区间名称
DATABASE
TABLESPACE INDEXSPACE
TABLE
INDEX
■ STOGROUP
STORAGE GROUP
■并行批量
并行批量程序处理的单元是批量单位,一个批量单位对应一个或多个地 区,如果批量访问的表没有划分PARTITON,则在一个PAGE里会出 现不同地区的数据(如下图):
地区1 地区2 地区4
地区2 地区3 地区1
地区1 地区3 地区8
PAGE1
PAGE2
PAGE3
■并行批量
情况一:处理地区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)的发生。
■需要建立索引的情况
为了建立分区数据库的PATITION INDEX必须 建立 为了保证数据约束性需要而建立的INDEX必须 建立。 为了提高查询效率,则考虑建立(是否建立 要考虑相关性能及维护开销) 考虑在使用UNION,DISTINCT,GROUP BY,ORDER BY等字句的列上加索引
■ RID
索引的叶子中的指针被称为“记录RID”或RID 每个RID是表空间的页号和数据值行指针的组 合,由RID可以准确地找到表中对应的记录。 当DB2通过索引来查找数据时,会先查找索引, 得到需要查询记录的RID,然后根据RID访问 数据页
■群集索引与非群集索引
索引
数据页
数据页
数据页
Patitioned Tablespace
■分区索引 Patitioned Index
分区 索引 分区 索引 分区 索引
0000—0299:北京地区
page
page
TB
page
page
Patitioned index
0300—0399:天津地区
page
page
0400—0499:河北地区
Patitioned Tablespace
所有索引的Cluster Ratio值都存储在系统表中,位于 SYSIBM.SYSINDEXES,可以用下列语句将其查出: SELECT * FROM SYSIBM.SYSINDEXES
某个表几个索引的Cluster Ratio一般相差较大
数据页中的数据只有一种排列方式,不可能符合所有索引的 排列。
一般来说,建立INDEX有以下益处:
提高查询效率; 建立唯一索引以保证数据的唯一性; 设计INDEX避免排序。
■建立索引的缺点
而INDEX的维护又有以下开销:
叶节点的‘分裂’消耗; INSERT、DELETE和UPDATE操作在INDEX上的 维护开销; 有存储要求; 其他日常维护的消耗:对恢复的影响,重组的影响。
■预取 Prefetch
NORMAL READ: 当读取一个或少数几个连续的 页时,DB2采用NORMAL READ方式,每次传输 的单位是一个页
PREFETCH: DB2通过一次异步的I/O操作,将若 干数据页读入BUFFER POOL。
减少I/O次数,提高I/O效率, 通过CUP与I/O的异步处理,节约处理时间
Segmented Tablespace
■ Patitioned TableSpace
page
page
一个Partitioned Table Space只包含一个表 (partitioned table)
TB
page
page
page
page
根据INDEX的范围将表 的存储空间划分成几个 部分,每部分对应一个 物理的数据集.这个index 叫做该表的partitioned index,一个partitioned table 对应唯一的 partitioned index,允许 SQL和utilities同时访问 不同的partitions
■ DB2 数据库的基本建立过程
建立存储组 ( Storage Group); 建立逻辑数据库 (DataBase); 定义表空间 (Tablespace); 建立表 (Table); 在表的基础上建立索引 (Index) ; 装载、处理数据 (Load/Insert);
■建立索引的优点
■ Segmented TableSpace
TB1
page
page
一个Segmented Table Space可包含多个表,DB2 以SEGMENT为单位为表分 配空间,每个段只存放同一 个表,但一个表所在的多个 SEGMENT不一定是连续的。
page TB2 page
page
page
对一个table进行scan时, 只有该table所在的 segment会被scan; 当对一个table加锁时,其 它表不会受影响; 当一个table被drop后,它 之前所占的空间会立即释 放
TABLESPACE Table Table Table
VSAM LINEAR DATASET
■页 Page
一个TABLESPACE由有连续编号的pages组成。 在DB2的中,PAGE是最小的存储单元,也是I/O的基 本单位,可以逻辑地划分为4K、8K、16K、32K;
TABLE中的一行(ROW)必须存放在单个PAGE中, 一个PAGE中可以存放多行 在资源管理中,Tablespaces, table, page或row 都 可以作为资源锁的单元