版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DB2 培训.DB2 逻辑组成图.DB2 数据库由一组对象组成包含许多下面列出的物理和逻辑对象:表、视图、索引和方式 锁、触发器、存储过程和包 缓冲池、日志文件和表空间 在以上对象中,有些如表或视图协助确定数据是如何组织的。另一些对象如表空间援用数据库的物理实现。剩下的一些对象如缓冲池和其它内存对象那么仅处置如何管理数据库性能。.DB2 存储模型用户处置的实践数据位于表中表本身位于表空间中。表空间被用作数据库和包含实践表数据的容器对象之间的一层。表空间可包含多个表。容器是物理存储设备。可以用目录名、设备名或文件名来标识它。一个容器分配给一个表空间。一个表空间可以跨越多个容器。.DB2 存储模型
2、.表、索引、长字段和表空间表、索引、长字段有时称为二进制大对象或 BLOB是在 DB2 数据库内创建的对象这些对象被映射到表空间,而表空间本身那么被映射到物理磁盘存储器。表是一个无序的数据记录集。它由列和行构成,通常称之为记录。索引是与单个表相关联的物理对象。索援用来在表中强迫实施独一性也就是说,确保没有反复值,以及在检索信息时改良性能。长字段或 BLOB是表内的一种数据类型。这种数据类型通常由非构造化数据图像、文档和音频文件构成,并且包含数量极大的信息。在表内存储这种数据会导致删除、插入和操作这些对象时的过度开销。所以并不直接将它们存储在表的行中。.DMS 和 SMS 表空间表空间是数据库和
3、存储在该数据库中的表之间的逻辑层。表空间在数据库内创建,表那么在表空间内创建。DB2 支持两种表空间:系统管理的空间System-Managed Space,SMS:这里,操作系统的文件系统管理器分配并管理空间,其中表是缺省表空间类型。 数据库管理的空间Database-Managed Space,DMS:这里,数据库管理器控制存储空间。这种表空间本质上是特殊用途文件系统的实现,旨在最好地满足数据库管理器的需求。SMS 表空间需求的维护很少。然而,SMS 表空间提供的优化选项较少,并且性能也许不及 DMS 表空间。.构造化查询言语SQL)大多数 SQL 语句包含一个或多个以下言语元素:字符:单
4、字节字符可以是一个字母、一个数字或一个特殊字符标志:标志是一个或多个字符的序列。标志不能包含空格,除非它是定界标识符或字符串常量。标识符:SQL 标识符是用于构成称号的标志。数据类型:值的数据类型决议了 DB2 如何解释该值。DB2 支持许多内置数据类型,也支持用户定义的数据类型常量:常量指定一个值。.函数:函数是一组输入数据值和一组结果值之间的关系。数据库函数可以是内置的,也可以是用户定义的。表达式:表达式指定一个值。字符串表达式、算术表达式和条件表达式都可以用于根据对一个或多个条件的求值指定一个特定结果。断言:断言指定了一个条件,对于给定的行或组这个条件能够是真true、假false或者未
5、知unknown。断言有一些子类型:根本断言对两个值进展比较例如,x y。 BETWEEN 断言把一个值同某一范围内的值进展比较。 EXISTS 断言测试某些行的存在性。 IN 断言把一个或多个值同一个值的集合进展比较。 LIKE 断言搜索具有某种方式的字符串。 NULL 断言测试空值。 .公用存放器公用存放器是数据库管理器为运用程序进程定义的存储区,用于存储可以在 SQL 语句中援用的信息。目前,DB2 通用数据库支持以下公用存放器:CLIENT ACCTNGCURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION CLIENT APPLNAMECURR
6、ENT PATHCLIENT USERIDCURRENT QUERY PTIMIZATIONCLIENT WRKSTNNAMECURRENT REFRESH AGECURRENT DATECURRENT SCHEMA.公用存放器CURRENT DBPARTITIONNUMCURRENT SERVERCURRENT DEFAULT TRANSFORM GROUPCURRENT TIMECURRENT DEGREECURRENT TIMESTAMPCURRENT EXPLAIN MODECURRENT TIMEZONECURRENT EXPLAIN SNAPSHOTUSER.公用存放器为了要阐明公
7、用存放器多么有用,请思索一下 SALES 表,其中有一列,列名是 Sales_Date。下面的语句向 SALES 表中插入一个新行,把销售日期设置成 CURRENT DATE 公用存放器的值: INSERT INTO sales (sales_date, sales_person, region, sales) VALUES (CURRENT DATE, SMITH, Manitoba, 100) .数据控制言语DCL)方式方式是命名对象如表、视图、触发器和函数的集合。方式提供了对象在数据库中的逻辑分类。对象名由两部分组成,方式名用作第一部分。例如,思索称号 SMITH.STAFF。在这个例如
8、中,STAFF 表的全限定称号包括方式名 SMITH 以使其同其它任何在系统目录中被命名为 STAFF 的表区分开来。方式本身就是一个数据库对象。可以运用 CREATE SCHEMA 语句显式创建方式;也可以在创建另一个对象时隐式创建方式。方式有与之相关联的特权。这允许方式一切者可以控制哪些用户有特权在方式中创建、修正和删除对象。.数据定义言语DDL)CREATE 语句用于创建数据库对象,包括:缓冲池Buffer pool 事件监控程序Event monitor 函数Function 索引Index 方式Schema 存储过程Stored procedure 表Table 表空间Table s
9、pace 触发器Trigger 视图View .每当您创建数据库对象时,都会更新系统目录。请思索一下 CREATE TABLE例如: CREATE TABLE org ( deptnumb SMALLINT NOT NULL, deptname VARCHAR(14), manager SMALLINT, division VARCHAR(10), location VARCHAR(13) ) 运用 DECLARE 语句生成新的数据库对象DECLARE 语句与 CREATE 语句是类似的,只需一点例外,用它所创建的是只能在数据库衔接期间存在的暂时表。当您要用到中间结果时,暂时表挺有用的。当您声
10、明暂时表时,不会更新系统目录。.例如: DECLARE GLOBAL TEMPORARY TABLE session.temp1 LIKE employee ON COMMIT PRESERVE ROWS NOT LOGGED IN mytempspace 在这个例如中,DECLARE GLOBAL TEMPORARY TABLE 语句被用来声明一个暂时表,表名是 TEMP1,位于用户现有的一个名叫 MYTEMPSPACE 的暂时表空间。每当处置 COMMIT 语句时,暂时表中的行就会被保管下来不会被删除。最后,对暂时表所做的更改不会记入日志。暂时表必需由方式名 SESSION 显式否那么将隐
11、式限定,由于每个定义声明过的表的会话对该暂时表都有本人的能够是独一的描画。.数据操作言语DMLSELECT 语句用于检索表或视图数据。要限制结果集中的行数,请运用 FETCH FIRST 子句。运用 DISTINCT 子句来消除结果集中反复的行。运用 WHERE 子句指定假设干选择条件或搜索条件来在表或视图中选择某些特定行。搜索条件由一个或多个断言组成。在构造搜索条件时,请务必要:只对数值型数据类型运用算术运算 只在兼容的数据类型间进展比较 将字符值括在单引号之内 完全按字符在数据库内的值指定字符值 .运用集合运算符把两个或两个以上的查询合并成一个查询您可以运用集合运算符 UNION、EXCE
12、PT 或 INTERSECT 把两个或两个以上的查询合并成一个查询。集合运算符将处置查询结果、去掉反复结果并前往最终结果集。UNION 集合运算符会把两个或两个以上其它结果表合并生成一个结果表。 EXCEPT 集合运算符生成一个结果表时,把第一个查询前往的一切行包括在内,但不计第二个以及其后的一切查询。 INTERSECT 集合运算符提供只包括由一切查询都前往的行来生成一个结果表。 .SQL存储过程SQL 过程是一个存储过程,它的主体是用 SQL 编写的。主体包含了 SQL 过程的逻辑。它可以包括变量声明、条件处置、控制流语句和 DML。可以在一条复合语句中指定多条 SQL 语句,该复合语句将
13、这几条语句组合成一个可执行块。当胜利调用 CREATE PROCEDURE (SQL) 语句该语句用运用程序效力器定义 SQL 过程时,就创建了一个 SQL 过程。SQL 过程是定义那些每当需求时就可以调用的更复杂的查询或义务的一种便利方式。以下步骤将创建一个命令行处置器command-line processor,CLP脚本名为 createSQLproc.db2,该脚本将创建一个简单的 SQL 过程:.衔接到 SAMPLE 数据库。发出以下命令:db2 -td -vf createSQLproc.db2 该 db2 命令指定 -td 选项标志该标志告知命令行处置器定义并运用 作为语句终止符
14、、-v 选项标志该标志告知命令行处置器将命令文本回显到规范输出和 -f 选项标志该标志告知命令行处置器从指定的文件而不是规范输入读取命令输入。.CREATE PROCEDURE sales_status (IN quota INTEGER, OUT sql_state CHAR(5) DYNAMIC RESULT SETS 1 LANGUAGE SQL BEGIN DECLARE SQLSTATE CHAR(5); DECLARE rs CURSOR WITH RETURN FOR SELECT sales_person, SUM(sales) AS total_sales FROM sale
15、s GROUP BY sales_person HAVING SUM(sales) quota; OPEN rs; SET sql_state = SQLSTATE; END .这个名为 SALES_STATUS 的过程接受名为 quota 的输入参数并前往名为 sql_state 的输出参数。该过程主体包含了一条 SELECT 语句,该语句前往每个销售总量超越指定配额的销售人员的姓名和销售总量。SQL 过程的参数列表可以不指定任何参数,也可以指定多个参数,每个参数可以是以下三种能够的类型之一:IN 参数将一个输入值传送到 SQL 过程;在过程主体中不能修正这个值。 OUT 参数从 SQL 过
16、程前往一个输出值。 INOUT 参数将一个输入值传送到 SQL 过程,并从该过程前往一个输出值。SQL 过程可以不前往结果集,也可以前往多个结果集。在我们的例如中,SALES_STATUS 过程前往一个结果集。这是经过以下步骤完成的:.在 DYNAMIC RESULT SETS 子句中声明 SQL 过程要前往的结果集的数量。对于将要前往的每个结果集,在过程主体中运用 WITH RETURN FOR 子句声明一个游标cursor。游标是一个命名的控制构造,运用程序用它来指向一个有序行集合中的某一特定行。游标用于从集合中检索行。翻开要前往的每个结果集的游标。当 SQL 过程前往时,仍使游标坚持翻开
17、。在 SQL 过程主体开场处必需声明变量。要声明变量,必需为该变量指定一个独一的标识符、指定该变量的 SQL 数据类型,并且可选地给该变量赋予一个初始值。.我们的样本 SQL 过程中的 SET 子句是一个控制流子句的例如。以下控制流语句、构造和子句可以用于 SQL 过程主体中的条件处置:CASE 构造根据对一个或多个条件的求值来选择执行途径。FOR 构造对表的每一行执行代码块。GET DIAGNOSTICS 语句将关于前一条 SQL 语句的信息前往到 SQL 变量中。GOTO 语句将控制权转移到带标签的块一段由一条或多条语句组成的代码,并由一个独一的、后面带冒号的 SQL 称号标识。IF 构造
18、根据条件的求值来选择执行途径。假设其它条件为假false的话,ELSEIF 和 ELSE 子句使您可以分支或指定缺省操作。ITERATE 子句将控制流传送到带标签的循环的开场处。LEAVE 子句将程序控制权转移到循环或代码块的外面。LOOP 子句会多次执行某个代码块,直到 LEAVE、ITERATE 或 GOTO 语句将控制权转移到循环外面。REPEAT 子句会不断执行某个代码块,直到某个指定的条件前往真true为止。.RETURN 子句将控制权从 SQL 过程前往到调用程序。SET 子句将一个值赋值给输出参数或 SQL 变量。当所指定的条件是真时,WHILE 子句会反复执行某个代码块。可以运
19、用 SQL CALL 语句从 DB2 命令行调用 SQL 过程。必需在系统目录中定义了要被调用的过程。衔接到 SAMPLE 数据库。发出以下语句:db2 “CALL sales_status (25, ?) “在本例中,输入参数 quota 的值 25 和作为输出参数 sql_state 的问号?占位符被传送到 SQL 过程。该过程前往每个销售总量超越指定配额25的销售人员的姓名和销售总量。.并发性和隔离级在多用户数据库环境下,多个事务可以同步执行,并且每个事务都有能够与其它正在运转的事务发生冲突。DB2 通用数据库尝试用来强迫执行并发性的方法之一是经过运用隔离级别,它决议在第一个事务访问数据
20、时,如何对其它事务锁定或隔离该事务所运用的数据。DB2 通用数据库运用以下隔离级别来强迫执行并发性:可反复的读Repeatable Read 读稳定性Read Stability 游标稳定性Cursor Stability 未提交的读Uncommitted Read .指定隔离级别虽然隔离级别是控制如何为事务锁定资源的,但实践上是在运用程序级别指定它们的。对于嵌入式 SQL 运用程序,是在预编译时或将运用程序绑定到数据库时指定要运用的隔离级别。在大多数情况下,运用程序的隔离级别是用受支持的编译言语如 C 或 C+编写的,经过 PRECOMPILE PROGRAM 和 BIND 命令API 的
21、ISOLATION 选项来设置隔离级别。对于调用级接口CLI运用程序,所用的隔离级别是在运用程序运转时经过调用指定了 SQL_ATTR_TXN_ISOLATION 衔接属性的 SQLSetConnectAttr() 函数进展设置的。也可以经过指定TXNISOLATION 关键字的值来设置 CLI 运用程序的隔离级别,该关键字位于 db2cli.ini 配置文件中。对于 JDBC 和 SQLJ 运用程序,隔离级别是在运用程序运转时经过调用驻留在 java.sql 衔接接口中的 setTransactionIsolation() 方法设置的。当没有指定隔离级别时,那么缺省地运用“游标稳定性隔离级别
22、。可以指定从 CLP 运转的命令和脚本所用的隔离级别,在建立与数据库的衔接之前在 CLP 中执行 CHANGE ISOLATION 命令设置的。.锁锁是一种用来将数据资源与单个事务关联起来的机制,其用途是当某个资源与拥有它的事务关联在一同时,控制其它事务如何与该资源交互。假设一个事务尝试访问数据资源的方式与另一个事务所持有的锁不兼容,那么该事务必需等待,直到拥有锁的事务终止为止。一切的锁都需求存储空间;由于可用空间并不是无限的,所以 DB2 数据库管理器必需限制锁可以运用的空间。为了防止特定数据库代理超越已建立的锁空间限制,当获取的恣意类型的锁过多时,会自动执行称为锁晋级的进程。锁晋级是一种转
23、换,它将同一表内几个单独的行级锁转换成一个单独的表级锁。由于锁定晋级是在内部处置的,所以独一可从外部检测到的结果能够只是对一个和多个表的并发访问减少了。.死锁有时两个或更多个事务对锁的争用会引起称为死锁的情况。当死锁情况发生时,除非某些外部代理采取行动,否那么所涉及的一切事务将无限期地等待释放锁。DB2 通用数据库用于处置死锁的工具是称为死锁检测器的异步系统后台进程。死锁检测器在大多数时间处于休眠形状,但会在预置的时间间隔被“唤醒,以确定能否存在死锁情况。假设死锁检测器在锁定子系统中发现死锁,那么选择死锁涉及的一个事务、终止并回滚它。.锁超时任何时候当一个事务在特定数据资源例如,表或行上持有锁
24、时,直到持有锁的事务终止并释放它所获取的一切锁之前,其它事务对该资源的访问都能够被回绝。假设没有某种适当的锁超时检测机制,那么事务能够无限期地等待锁的释放。例如,有能够出现这种情况:一个事务在等待另一个用户的运用程序所持有的锁被释放,而该用户分开了他或她的任务站,但忘了执行一些允许运用程序终止拥有锁的事务的交互。显然,此类情况会导致极差的运用程序性能。要防止发生此类情况时妨碍其它运用程序的执行,可以在数据库的配置文件中指定锁超时值经过 locktimeout数据库配置参数。运用之后,该参数就控制任何事务将等待获取所恳求的锁的时间。假设在指定的时间间隔过去之后还未获得想要的锁,那么等待的运用程序
25、接纳一个错误,并回滚恳求该锁的事务。分布式事务运用程序环境特别容易产生此类超时;可以经过运用锁超时防止它们。.DB2 数据库管理器总是尝试获取行级锁。但是,可以经过执行特殊方式的 ALTER TABLE 语句来修正这种行为,如下所示:ALTER TABLE TableName LOCKSIZE TABLE其中 TableName 标识一个现有表的称号,一切事务在访问它时都要获取表级锁。也可以经过执行 LOCK TABLE 语句,强迫 DB2 数据库管理器为特定事务在表上获取表级锁,如下所示:LOCK TABLE TableName IN SHARE | EXCLUSIVE MODE 假设在执行
26、这个语句时指定了共享SHARE方式,就会获得一个允许其它事务读取但不能更改存储在其中的数据的表级锁;假设执行时指定了互斥EXCLUSIVE方式,就会获得一个不允许其它事务读取或修正存储在表中的数据的表级锁。.适用工具LoadLOAD 适用程序是一种用数据来填充表的方法。经过格式化的页被直接写入数据库。这种机制允许进展比 IMPORT 适用程序更有效的数据挪动。不过,LOAD 适用程序不执行某些操作,如援用或表约束检查以及触发器调用。以下是 LOAD 命令的中心; LOAD FROM input_source OF input_type MESSAGES message_file INSERT
27、| REPLACE | TERMINATE | RESTART INTO target_tablename LOAD 的源输入的格式可以是 DEL、ASC、PC/IXF 或 CURSOR。游标是从 SELECT 语句前往的结果集。.LOAD 可以以四种不同方式执行:INSERT 方式将输入数据添加到表中,不更改现有表数据。 REPLACE 方式从表中删除全部现有数据,然后用输入数据填充该表。很有用的清空表方式:load from /dev/null of del replace into tablenameTERMINATE 方式终止装入操作,然后回滚到装入操作的起始点。一个例外是:假设指定了
28、 REPLACE 方式,那么表将会被截断。RESTART 方式用于重新启动以前中断的装入。它将自动从上一个一致性点继续操作。.LOAD FROM emp.ixf OF IXF MESSAGES msg.out MODIFIED BY DUMPFILE=c:emp.dmp TEMPFILES PATH d:tmp INSERT INTO employee FOR EXCEPTION mpexp .装入表期间,LOAD 适用程序会用互斥锁将它锁定。这是 ALLOW NO ACCESS 选项的缺省行为。检查装入操作的形状,还前往表形状:LOAD QUERY TABLE table_name ALLO
29、W READ ACCESS 选项导致表在共享方式下被锁定。阅读器可以访问表中曾经存在的数据,却不能访问新的数据。正在装入的数据要等到装入完成后才可获得。DB2不会将与目的表定义不一致的输入数据装入表中。在装入阶段,这样的数据会遭到回绝,并被记录在音讯文件中。在删除阶段,LOAD 适用程序会删除那些违反任何独一性约束的行。假设指定了异常表,违规的行将插入该表。对于表能够定义的其它约束如援用完好性和检查约束,怎样办呢?LOAD 适用程序不检查这些约束。表会被置于 CHECK PENDING 形状,这种形状迫使您先手工检查数据完好性,然后才干访问表。 SET INTEGRITY FOR tablename IMMEDIATE CHECKED .运用开发中心开发存储过程创建工程:我们要做的第一件事是翻开 DB2 Development Center。选择 Start = Programs = IBM DB2 = Development Tools = Development Center 调出 Development Center L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医医学经络腧穴学课件-奇穴
- 《学前社会教育》课件
- 2025届海南省部分学校高三上学期全真模拟(二)历史试卷(解析版)
- 2024-2025学年浙江省台州市十校联考高一上学期期中考试历史试题(解析版)
- 《物流仓储管理》课件
- 单位管理制度集合大全员工管理篇
- 《物流管理运输管理》课件
- 单位管理制度汇编大全员工管理
- 单位管理制度合并汇编【职工管理】
- 单位管理制度分享合集职员管理
- 儿童涂色画空白填色图(100张文本打印版)
- 2024版合同及信息管理方案
- 压缩空气(教学设计)-2024-2025学年三年级上册科学教科版
- JGT266-2011 泡沫混凝土标准规范
- 猩红热ppt幻灯片课件
- 输配电线路基础知识
- 2015年日历表(超清晰A4打印版)
- 剪式汽车举升机设计
- 健康证体检表
- 大气课程设计---袋式除尘器
- 市政桥梁工程施工
评论
0/150
提交评论