CS&TInformationCourseBeyondTechnologyDB2东软信息学院计算机科学与技术系CS&TInformationCourse第3章DB2中的数据对象CS&TInformationCourse目录•3.1DB2的系统结构•3.2系统参数•3.3实例•3.4数据库•3.5缓冲池•3.6表空间CS&TInformationCourse目录•3.7模式•3.8表•3.9视图•3.10索引•3.11数据类型•3.12约束CS&TInformationCourse目录•3.13序列•3.14存储过程•3.15触发器•3.16用户自定义函数•3.17专用寄存器CS&TInformationCourse3.1DB2的系统结构系统环境变量、注册表变量实例配置参数实例配置参数实例1实例2表空间表视图系统目录表空间表索引表空间表大对象数据库配置参数数据库1数据库配置参数数据库2表空间1表空间2表空间1表空间2表空间3数据库配置参数数据库1数据库配置参数数据库2数据库配置参数数据库3CS&TInformationCourse3.2系统参数•系统环境变量–Windows中通过控制面板设置–UNIX/Linux中用export设置•DB2全局注册表变量–db2set-g–db2set变量名=值CS&TInformationCourse3.3实例•实例(Instance)是逻辑数据库管理器环境,可以在实例中创建数据库、对数据库进行编目和设置配置参数。根据需要,可以在同一台物理服务器上创建多个实例,每个实例拥有唯一的数据库服务器环境。CS&TInformationCourse实例的创建、删除、列示与切换•创建实例–db2icrt实例名•删除实例–db2idrop实例名•列示实例–db2ilist实例名•切换实例–Windows中,更改环境变量DB2INSTANCE–UNIX/Linux中,直接切换用户CS&TInformationCourse实例的启动与停止•实例的启动–db2start•实例的停止–db2stop•实例自动启动的开启与关闭–db2iauto-on实例名–db2iauto-off实例名CS&TInformationCourse实例的附接与断开•实例的附接–attachto实例名user用户名using密码•实例的断开–detachCS&TInformationCourse管理服务器(DAS)•是特殊的实例,能够调度执行在任务中心中创建的任务。•在Windows中对应于控制面板中的DB2DAS00服务,在UNIX、Linux中,对应于dasadm1用户。•启动和停止DAS服务–db2adminstart–db2adminstopCS&TInformationCourse实例级别的参数配置•查看实例级别的参数–getdbmcfg•修改实例级别的参数–updatedbmcfgusing参数名参数值CS&TInformationCourse3.4数据库•数据库是有组织的、可共享的数据集合。DB2是关系型与层次型混合的数据库,基本的数据结构是二维表格,二维表由一组已定义的列和任意数目的行组成,表与表之间可以存在关联,可以通过SQL语句定义、修改、查询表结构和表中的数据。从DB2V9开始还增加了XML数据类型,提供了XQuery查询方法,这种新特性适用于层次型的数据存储,是对现有关系型数据库的良好补充。CS&TInformationCourse数据库的创建、修改、删除与查看•数据库的创建•CREATEDATABASE数据库名称[AUTOMATICSTORAGE自动存储开关][ON存储路径][DBPATHON数据库路径][USINGCODESET字符集TERRITORY区域码]•数据库的修改–数据库被创建之后,大多数内容无法再修改,只能增加容器。•数据库的删除–dropdb数据库名•查看数据库目录–listdbdirectoryCS&TInformationCourse数据库的连接与断开•数据库的连接–CONNECTTO数据库名[user用户名][using密码]•数据库的断开–CONNECTRESET–DISCONNECT数据库名–TERMINATECS&TInformationCourse数据库的激活与取消激活•数据库的激活–ACTIVATEDATABASE数据库名•数据库的取消激活–DEACTIVATEDATABASE数据库名CS&TInformationCourse实例和数据库的编目•实例的编目–CATALOGTCPIPNODE……•数据库的编目–CATALOGDATABASE……CS&TInformationCourse数据库级别的参数配置•数据库级别参数的查看–GETDBCFGFOR数据库名•数据库级别参数的修改–UPDATEDBCFGFOR数据库名USING参数名称更新后数值CS&TInformationCourse3.5缓冲池•缓冲池(BufferPool)是内存中的一块区域,用于临时读入和更新数据库页(包含表行或者索引项)。•每个数据库都至少要包含一个缓冲池。•缓冲池由很多页面构成,同一个缓冲池的所有页面必须大小相同。CS&TInformationCourse缓冲池的创建、修改与删除•缓冲池的创建–CREATEBUFFERPOOL……•缓冲池的修改–ALTERBUFFERPOOL……•缓冲池的删除–DROPBUFFERPOOL……CS&TInformationCourse缓冲池状态的查看•方法一:–db2mtrk-d-p–v•方法二:–SELECTbpname,npagesFROMSYSIBM.SYSBUFFERPOOLS•方法三:–SELECTbpname,npagesFROMSYSCAT.BUFFERPOOLSCS&TInformationCourse3.6表空间•表空间(TableSpace)是DB2数据库中存储数据的逻辑块。之所以称作逻辑块,是因为它实现了把真正的物理存储设备进行划分的功能,真正在底层存储数据的称为容器,容器可以是裸设备、目录或者文件。•表空间把若干个容器组织起来,使之更有效地进行存储。一个表空间中可以包含一个或多个容器,但是一个容器只能属于一个表空间。CS&TInformationCourse表空间的分类•表空间有四种类型:–常规表空间(RegularTablespace)–大对象表空间(LargeTablespace)–系统临时表空间(SystemTemporaryTablespace)–用户临时表空间(UserTemporaryTablespace)•表空间有两种管理方式:–系统管理表空间(SMS)–数据库管理表空间(DMS)CS&TInformationCourse表空间的创建、修改和删除•表空间的创建–CREATETABLESPACE……•表空间的修改–ALTERTABLESPACE……•表空间的删除–DROPTABLESPACE……CS&TInformationCourse表空间状态的查看•LISTTABLESPACES[SHOWDETAIL]•LISTTABLESPACECONTAINERSFOR表空间ID号•SELECTtbspace,tbspacetype,extentsize,prefetchsizeFROMsyscat.tablespaces•GETSNAPSHOTFORTABLESPACESON数据库名•db2pd-db数据库名-tablespacesCS&TInformationCourse关于表空间和缓冲池性能方面的建议•对于在线事务处理系统(OLTP),可以使用小的页面,如4K的页,而对于在线分析处理系统(OLAP)和决策支持系统(DSS),应该使用大页面,如32K的页;•通常DMS在性能上要高于SMS,大约高10%~15%;•增加缓冲池的大小;CS&TInformationCourse关于表空间和缓冲池性能方面的建议•表空间预读取大小要足够大,一定不能设置为0;•尽量开启缓冲池自动调整大小的功能;•尽量开启表空间的自动管理存储功能。CS&TInformationCourse3.7模式•模式(Schema)是一个逻辑分组,每个数据库内部的对象在创建时,都可以显式或者隐式地指定模式,同一个模式下的对象构成一个集合。•模式的创建–CREATESCHEMA模式名称[AUTHORIZATION用户名]CS&TInformationCourse3.8表•普通表的创建、修改和删除–CREATETABLE……–ALTERTABLE……–DROPTABLE……CS&TInformationCourse用户临时表•用户临时表简称DGTT,与普通的用户表不同,用户临时表并不是一直存储在硬盘上,而是在一个应用程序结束之后,与之相关的用户临时表会自动从系统中删除。DECLAREGLOBALTEMPORARYTABLE……CS&TInformationCourse3.9视图•视图(View)是一个虚表,它本身不存储数据,而是架设在其他表或者视图上来查看数据。视图就好比是一个放大镜,当定义好这个放大镜的范围之后,就可以通过这个放大镜查看其他表中的相关数据。能够查看哪些数据,以什么样的方式查看数据,都是在创建视图的时候决定的。CS&TInformationCourse视图的创建与删除•视图的创建–CREATEVIEW视图名称[(字段列表)]AS子查询[WITHCHECKOPTION]•视图的删除–DROPVIEW视图名称CS&TInformationCourse视图的WITHCHECKOPTION选项•使用WITHCHECKOPTION选项可以在视图上指定一个约束,该约束在通过视图进行数据插入和修改时会起作用。•视图可以嵌套,即在视图的基础上再创建视图,此时视图是否有强制检查选项,需要根据这两个视图创建的定义来确定。CS&TInformationCourse可更新视图•判断一个视图是否可更新,主要看其在创建的时候指定的子查询,子查询必须满足以下条件:–其FROM子句基于一张表、一个可更新的嵌套表表达式或者一个可更新的公共表表达式;–不使用GROUPBY和HAVING子句;–SELECT选择的列中不包括列函数;CS&TInformationCourse可更新视图–不使用集合操作UNION、EXCEPT和INTERSECT,但可以使用UNIONALL;–不使用DISTINCT。–不满足以上条件的视图称为只读视图,在SYSCAT.VIEW中标记为READONLY的视图就是只读视图。CS&TInformationCourse3.10索引•索引(Index)主要用于提高数据查询的效率,唯一索引还可以保证列的唯一性。CS&TInformationCourse索引的种类•在关系二维表上定义的索引分成普通索引、唯一索引和聚簇索引三种,对XML字段可以单独定义索引–普通索引主要用于提高查询效率–唯一索引除了能够提高查询效率之外,更重要的作用是保证相关字段的唯一性。–聚簇索引又称为集群索引,这种索引能够直接把表中的数据按照指定的顺序放到合适的位置,所以在查询的时候可以获得很高的效率。CS&TInformationCourse索引的结构叶节点'E''N''Z'根节点'F''L''N'('G',rid)('I',rid)('K',rid)('F',rid)('M',rid)('N',rid)…………中间节点CS&TInformationCourse索引的创建与删除•索引的创建–CREATEINDEX……•索引的删除–DROPINDEX……CS&TInformationCourse3.11数据类型•DB2主要分成两类数据类型:内置的数据类型和用户自定义的数据类型。•内置数据类型主要包括数值型、文本型、日期时间型和XML四大类。CS&TInformationCourse数值型数值型整型浮点型十进制型SMALLINTINTBIGINTREALDOUBLEDECIMALDECFLOATCS&TInfo