DB2数据库

2024-10-03

DB2数据库(精选7篇)

DB2数据库 篇1

1 并行数据库系统的本质

当前, 银行业中的许多核心业务系统 (如记账系统、支付清算系统、征信系统等) , 随着业务事件的发生、业务流程的运转、业务推广, 业务系统中的生产性子系统, 每天要接受大量用户的7╳24小时高并发实时访问, 吐出海量的交易数据, 对于银行企业来说, 这些交易数据是无价之宝, 业务系统中的管理性子系统要对该海量交易数据实时进行数据归档、统计分析、货币政策及金融服务等业务价值挖掘处理, 其数据容量以TB乃至PB来衡量。时至今日, 传统的数据库系统技术仍然难以满足这个问题空间的需求。

自1945年第一台电子管计算机诞生以来, 历经近60年, 计算机硬件飞速发展, 特别是微处理器的迅猛发展, 处理器的运算性能以摩尔定律提速、每1.5年提高1倍, 主存储器的容量每3到4年翻1倍, 磁盘的容量每年提高60%, 而且这些硬件价格都一直保持下跌, 性能价格比一直在提升。这些导致了新型计算机体系结构的发展和应用。而今, 业界一致推崇, 大规模并行处理机作为海量数据处理和实时高性能计算需求的解空间, 为问题求解提供了坚实的物质基础。

在海量数据实时处理的问题空间与大规模并行处理机的解空间之间, 由于两者的概念和处理逻辑截然不同, 要弥补这一距离, 需要从问题空间向解空间进行映射, 建立映射函数f:y=f (x) , 定义域为:{x/x=海量数据实时处理的问题空间的概念和处理逻辑}, 定义域为:{y/y=大规模并行处理机的解空间的概念和处理逻辑}。由此可见, 并行数据库系统的本质可以概括为:从海量数据实时处理的问题空间到大规模并行处理机的解空间之间的映射f。而且, 从问题空间向解空间直接进行映射, 必定存在一定的复杂性, 为了控制这一复杂性, 需要建立一个复合映射函数f, 即f (x) =P (L (x) ) , 其中L为从问题空间到并行数据库系统的逻辑映射, P为从并行数据库系统到解空间的物理映射。实现映射的基本手段是建立模型, 为逻辑映射建立并行数据库系统的逻辑结构模型, 为物理映射建立并行数据库系统的物理结构模型。

2 并行数据库系统的目标、原则与方法

由映射f的定义可知, 并行数据库系统的基本目标是:高性能、高可用性。高性能由并行机制来保证, 高可用性由冗余机制来保证。

高性能由线性加速和线性扩展两个指标来度量。假设没有并行性情况下, 投入1个单位计算资源, 在1个单位时间内, 完成1个单位计算规模的1个计算任务。线性加速是指:投入n个单位计算资源, 在1/n个单位时间内, 完成1个单位计算规模的1个计算任务。线性扩展是指:投入n个单位计算资源, 在1个单位时间内, 完成1个单位计算规模的n个计算任务。

吸收业界专用数据库机研究失败教训, 为了达到并行数据库系统的上述基本目标, 遵循如下并行数据库系统的原则:由有限构建无限。即不存在一台无限快的处理器提供无限能力的计算资源, 而是由无限多个有限能力的计算资源通过一定的结构关系来形成一个无限能力的计算资源。这种结构关系就是并行计算体系结构和并行计算算法的研究内容。

并行机制的基本实现方法有流水线并行性和分区并行性。流水线并行性:把一个关系运算的输出结果串联到另一个关系运算的输入端, 使得多个关系运算构成流水线, 利用流水线深度 (即步数) 来获得并行性。由于在关系运算中, 流水线深度太小等因素限制了其并行性的发挥。分区并行性:采用分而治之的思想, 其实质是把大任务转化为多个独立的小任务, 包括数据分区和并行运算2个方面, 即分割大规模数据集为多个小规模数据集, 使得一个关系运算被分割成多个相同的子关系运算, 这些子关系运算分别作用在不同的小规模数据集上。

数据分区是分区并行性的关键, 假定要把数据映射到n个磁盘上D0, D1, …, Dn-1上, 目前, 有3种经典的数据分区策略:

轮转法:对于关系r中的第i个元组分配到第 (i mod n) 个磁盘上, 保证了元组在多个磁盘上的平均分布。适合于扫描操作。

散列分区:关系r中的一个或多个属性作为分区属性, 对于r中的元组rt, 该元组被分配到第h (rt) 个磁盘上, 其中, h为一个值域为{0, 1, 2, …, n-1}的散列函数。适合于基于分区属性的点查询, 不适合范围查询。

范围分区:对于关系r, 分区属性为A, 则在A上可以定义一个分区向量:[v0, v1, …, vn-2]。分区过程如下:若t[A]〈v0, 则t被分配给第0个磁盘, 若t[A]≥vn-2, t分配给第n-1个磁盘, 若vi≤t[A]

并行运算是分区并行性的第二步。由于关系运算是基于集合的, 集合的偏序关系、等价划分等性质, 适合于进行数据分区, 所以关系运算特别适合于并行处理。并行关系运算一直以来是算法研究的热点领域, 特别是并行连接和并行排序等。

冗余用于改善可靠性, 冗余信息可以用来在磁盘等出现故障时, 重新生成数据。

3 DB2并行数据库系统的逻辑结构模型

IBM DB2 InfoSphere Warehouse Enterprise Edition就是在并行数据库系统的目标、原则与方法指导下研发的一款高端并行数据库系统, 俗称DB2 EE with DPF。

DB2并行数据库系统的逻辑结构模型如下:

DB2数据库分区采用分区并行性中的散列分区策略来设计。每个数据库分区称为节点或者数据库节点。每个数据库分区都有自己独立的计算资源 (CPU、主存储器和磁盘) 。每个数据库分区是一个数据库, 有自己的数据、索引、事务日志和配置文件。支持的并行性粒度有:节点间、节点内、查询间、查询内部。没有限制的规模, 横向扩展。基于分区键, 通过散列函数均匀地映射数据到不同的数据库分区, 当用户发出SQL操作时, 被连接的分区作为协调节点 (协调节点是运行协调代理的一个数据库分区, 任意一个数据库分区都能够成为协调节点) , 负责处理用户的请求, 并根据分区键和分布图将用户的请求分解成多个子任务交由不同的分区并行处理, 最后将不同分区的执行结果汇总返回给用户。

DB2表空间采用分区并行性中的轮转法策略来设计, DB2中称之为条带化。表空间是由容器构成的, 容器是数据的物理存储, 如果一个表空间有多个容器, 那么数据在写容器的过程中是按照循环的方式按块 (extent) 写的。当在第一个容器中写完一块后在第二个容器写, 然后又循环到第一个容器, 以此类推。

DB2分区表采用分区并行性中的范围分区策略来设计。分区表根据分区键, 将表数据分布到多个数据分区中。允许一个逻辑表被分成多个分散的逻辑存储对象, 每个存储对象对应表的“一部分”, 值的范围用来指定每个分区。数据分区是表的一部分, 它包含该表的一部分记录, 并且与其他记录分开存储。这些数据分区可位于不同的表空间或同一表表空间中。普通表只可以放于一个表空间中, 而分区表可以将自己的各个不同部分放在不同的表空间中。

多维集群弥补数据库分区、表分区的declusterring的缺点, 从物理上把表数据同时沿着多个维聚集起来, 允许聚集多维内的物理数据页面来聚集逻辑表上的数据, 提高查询性能。

4 DB2并行数据库系统的物理结构模型

为了支持DB2并行数据库系统的逻辑结构模型向大规模并行处理机的解空间映射, 需要引入DB2并行数据库系统的物理结构模型。

大规模并行处理机MPP的3种典型物理结构:共享内存、共享磁盘、无共享。

共享内存SE:所有的处理器和磁盘共享一个公共的主存储器, 采用总线连接。优点是处理器之间的通信效率极高。缺点是其规模不能超过64个处理器, 否则会变成瓶颈。

共享磁盘SD:所有的处理器共享一组公共的磁盘。采用互连网络连接, 每个处理器都可以直接访问所有的磁盘, 每个处理器有自己私有的主存储器。优点是容错性, 缺点是速度要慢一些。

无共享SN:各处理器既不共享公共的主存储器, 又不共享公共的磁盘。在SN中, 机器的每一个节点包括多个处理器、一个主存储器和多个磁盘。采用互连网络连接, 一个节点上的处理器可以通过高速互连网络与另一个节点上的另一个处理器通信。由于局部磁盘访问有各个处理器的本地磁盘提供, 所以无共享模式客服了所有的I/O都要通过一个互联网络的缺点, 只有那些非本地磁盘的查询及其结果关系需要通过网络传送。优点是无共享体系结构更具可扩展性, 可以很容易地支持大量的处理器。缺点是数据的传输涉及两端的软件交互, 故速度要慢一些。

对比以上3种物理结构, 可知无共享SN的物理结构适合架构高性能数据库系统, 所以DB2率先采用之。DB2并行数据库系统的物理结构模型如下所示:

系统的拉动查询性能的主要组件。

5 结束语

本文提出了提高吞吐量以及满足高可靠性需求的问题空间, 然后给出了DB2并行数据库系统向相应解空间的映射及其模型建立, 同时研究了DB2并行数据库

摘要:DB2并行数据库系统当前在银行业的许多核心业务系统中被广泛使用, 本文力求以一种创新性的逻辑思路, 系统化地从并行数据库系统的本质、目标、原则、方法、逻辑结构模型、物理结构模型等方面对DB2并行数据库系统的核心技术进行研究与分析, 以期更好地指导DB2应用实践。

关键词:并行数据库系统,并行机制,DB2,数据库分区,表分区,映射

参考文献

[1]杨利、周兴铭、郑若忠.并行数据库的体系结构.国防科技大学计算机研究所.1995.

[2]陈越洲、杨树强、贾焰.基于DB2的并行数据库体系结构研究.计算机工程.2005年3月.

[3]Abraham Silberschatz (美国) 等.数据库系统概念 (第五版) .机械工业出版社.2008年12月.

[4]王立福等.软件工程 (第三版) .北京大学出版社.2009.

[5]王飞鹏等.DB2设计与性能优化.电子工业出版社.2011.

DB2数据库 篇2

重新编目数据库

$db2 uncatalog db oracle

$db2 catalog db oracle

编目成功后会即可看到:

$db2 list db directory

Database alias                      = ORACLE

Database name                       = ORACLE

Local database directory            = /public/home/guanghong.yu/db2inst1

Database release level              = d.00

Comment                             =

Directory entry type                = Indirect

Catalog database partition number   = 0

Alternate server hostname           =

Alternate server port number        =

如上操作做了后仍然不能连接数据库,需要对表空间做如下操作:

编辑mvdb.cfg

DB_NAME=ORACLE

DB_PATH=/home/db2inst1,/public/home/guanghong.yu/db2inst1

INSTANCE=db2inst1

NODENUM=0

CONT_PATH=/home/db2inst1/db2inst1/NODE0000/ORACLE/T0000000/C0000000.CAT,/public/home/guanghong.yu/db2inst1/db2inst1/NODE0000/ORACLE/T0000000/C0000000.CAT

STORAGE_PATH=/home/db2inst1/,/public/home/guanghong.yu/db2inst1

运行如下命令:

$db2relocatedb -f mvdb.cfg

[db2inst1@hpserver2 db2]$ db2relocatedb -f mvdb.cfg

Files and control structures were changed successfully.

Database was catalogued successfully.

DBT1000I The tool completed successfully.

运行成功,数据库可以成功连接激活啦

[db2inst1@hpserver2 db2]$ db2 connect to oracle

Database Connection Information

Database server       = DB2/LINUXX8664 9.7.5

SQL authorization ID  = DB2INST1

Local database alias  = ORACLE

OK,移动后的数据库可以被使用啦,

 

如何移动DB2的数据库建库目录

 

DB2数据库 篇3

9。DB2 9是可以无缝兼容层次型数据库和关系型数据库的信息系统管理平台,“pureXML(纯XML)”技术的使用使其成为数据库管理领域的革新力量。

DATABASE 2(DB2)是IBM又一款具有悠久历史的产品。过去的DB2是大型机上的专用软件,作为分布式计算的核心,上世纪80年代初出现的DB2极大地提升了企业信息管理的水平。如今的DB2可以运行在包括Intel平台在内的各种服务器平台上,这也是IBM典型的技术下移的成功案例。在不久前结束的IBM系统存储大会上,IBM传达了这样的思想:信息如何能被高效利用已经跨越了信息容量增长本身,成为驱动存储市场发展的决定性力量。而如今DB2

9的发布恰恰是信息价值提升理论的又一次实践,IBM已经将信息应用价值提升作为存储及信息管理将来的发展方向。

数据存储三重天

说到IBM的DB2,就不能不提数据存储技术的演进。数据存储技术的发展实际上是数据存储量不断增加的直接后果。当最初研究人员将数据存放和归类作为一个课题来研究的时候,他们选择层次型数据库来描述所存储的事件,这是因为层次型数据库所使用的树状结构可以很清晰地描述为数不多的简单事件(类似于文件系统的目录结构)。而当数据存储量大幅度增长、数据类型逐渐丰富后,层次型数据结构变得过于繁杂,当增加数据时需要更多的人力、物力进行更新,同时如果哪个地方数据丢失了不容易被发现。这时关系型数据库应运而生。关系型数据库通过两维模式来描述和存储数据。此前的三十年,关系型数据库管理系统一直占据着数据库领域的绝对统治地位,一直到XML出现。

事实上,XML(eXtensible Markup Language,可延伸式标注语言)是作为HTML终结者的身份出现的。HTML对于近年来互联网的蓬勃发展功不可没,作为网站设计的通行语言,HTML简单易用,使普通用户也可以在网络上构筑家园。由于进入的门槛较低,运行在互联网上的数据正以几何级数的方式增长。而HTML虽然对于布局、外观方面很擅长,却缺乏对于内容的表达能力,这就使互联网使用者很难找到对自己有用的信息。换句话说,HTML擅长于人机交互,而不能很好地支持机器之间的交互。我们知道搜索引擎通过网络蜘蛛来搜集网站信息,而每个网站HTML的设计结构都不一样,而且其中包括很多长得极为类似的标签,常常使网络蜘蛛无所适从,这也是我们无法实现精确搜索的原因。而XML与HTML最大的不同是可以自定义标签,可以将标签定义为充分达意的形式

,这样网络蜘蛛可以很轻易地找到相应的内容并进行分类。同时由于建立在Unicode基础上,使得XML可以定义中文标签,这对于中文搜索来说意义深远。

XML的好处远不止这些。当XML完全替代HTML后,我们可以拥有更为精确的搜索引擎,例如进行某件商品价格搜索时,我们甚至可以搜索到所有XML网页中价格低于××元的商品。这在目前的HTML环境下是无法实现的。而对于企业用户来说,XML格式的数据拥有自我描述性和更强的灵活性,可以帮助用户实现庞杂数据的有效管理和使用。

XML拥有优秀的基因,那么是什么阻碍了它像HTML一样迅速流行呢?原因是与关系型数据库不兼容。XML是一种层次型的数据模型,与关系型数据库不能直接匹配。换句话说,在关系型数据库中存储和输出XML数据,就像在普通PC机上通过模拟器运行Mac

OS,其性能会受到严重影响。IBM DB2 9就是为解决这个问题而生的。

从XML到纯XML

IBM院士王云表示,在无需重新定义XML数据的格式,或将其置于数据库大型对象中的前提下,IBM

DB2 9允许用户无缝管理普通关系型数据和纯XML数据。“这种能力有助于客户增加其信息的实用性,同时大大降低与现有数据管理技术相关的管理成本。它还将显著降低复杂性,并减少普通开发商创建‘同时访问关系数据和XML数据的应用’所花费的时间”。纯XML这一在DB2

9中采用的专利技术成为其应对XML数据的有力武器。

图注:如图所示,IBM持续的创新能力就意味着追寻“更深的蓝”

纯XML是DB2 9所倡导的数据库管理技术,其概念并不像他的名称那样令人费解。用Word

2003随便打开一个Word文档,选择“另存为”,在存储文件类型选择框中,我们可以看到“XML文档”的选项。在这个选项的旁边,我们可以看到两个复选项“应用转换”和“仅保存数据”。也就是说,当我们选择将文档归档为XML数据时,有两个选择“一是将XML文档以文件的方式存储在文件库中(即选择‘仅保存数据’),二是将XML数据转换成关系型表格存储在关系型数据库中(即选择‘应用转换’)”。而当我们要使用这个文档时,又需要以相逆的过程来转换这个文档。而纯XML的“功夫”就在于在处理类似的问题时,可以像普通文件一样直接存储和输出相关的数据,这可以减少存储和使用XML数据所需要的时间及工作量。而当兼容性问题解决后,XML也会在广阔天地大有作为。

古董有真品和赝品之分,而真品往往淹没在赝品堆中难以辨识。数据存储也是这样,在我们需要某种数据的时候,其他数据对我们来说都是干扰因素。全面无缝兼容XML的DB2

9就是我们去伪存真时的金睛火眼,能够帮助用户萃取数据海洋中的菁华。

DB2数据库 篇4

软件在上线之前已经通过功能性能测试, 并保留有一定的冗余量。上线运行一年以后, 用户反映软件运行变慢, 打开页面时间过长, 性能问题严重影响了业务的正常运行。

1 问题描述

根据通用使用原则, 打开页面的吸引分界线是8秒, 若在8秒以内显示一个页面可以吸引使用者, 让使用者乐于使用。该用户的调运联办和财务两个部门用户反映:以前很快, 最近一段时间 (近两个月) 越来越慢。现场测试验证, 最快打开页面一分多钟, 打开调运科报表总表花了九分钟。确实已经难以接受, 而用户在一天的工作中, “集中”操作行为不会集中发生。

2 软件性能分析

2.1 分析层次

1) 硬件的配置:包括网络环境有交换机、路由器等, 对硬件配置进行分析, 对服务器的内存、CPU等。认为此方面无明显问题。

2) 软件系统设计的架构及技术平台:系统架构及平台技术已经既成, 可不考虑;

3) WEBSPHERE中间件的设置和优化:

设置容器性能Java虚拟机堆大小 (JVM Heap Size) 参数, Web容器线程池参数等。

4) 数据库优化:

(1) 控制内存的使用:系统内存使用正常。

(2) 避免过度消耗CPU:CPU应用在80%以上, 较高。

(3) 提高磁盘的效率:对硬盘进监测发现大量硬盘碎片。

(4) 减少网络开销:状态正常。

5) 应用程序

针对问题页面, 分析了问题页面的问题, 主要涉及存取、更新、查询和系统响应时间。遂对相应的数据表的结构和表现进行分析, 发现涉及业务的最大的一张表是300多万条数据, 随着系统不断运行, 数据量还在不断增长, 查询速度明显很慢。

6) SQL语句

分析SQL语言中DML的运用情况, 首先查看查询的性能问题, 在查询一张表或多张表的联合查询时, 应该通过尽可能晚地启动事务的第一个SQL语句, 使事务更新尽可能接近提交阶段, 从而使事务的持续时间尽可能的短。对问题页面的分析认为个别查询语句还可以再进行优化。

2.2 分析工具

1) 通过DB2健康中心的监测, 分析系统内存使用情况、数据服务器的资源使用情况、系统最大的业务处理量、内存使用、线程等;未发现系统内存泄露等严重问题。

在DB2中有很多和性能优化相关的工具和命令, 下面简单地介绍几种:

(1) SNAPSHOT:这是DB2获取数据库信息快照的一种方法。它能够获取在数据库中关于缓冲池, 锁, 排序以及SQL等等信息。DBA可以通过获取这些信息来对数据库中的各组件进行评估来分析问题的瓶颈。

(2) DB2PD:这个命令是用来分析数据库的当前状态, 它带有很多参数。可以用来分析应用程序, 代理, 内存块, 缓冲池, 日志及锁状态等信息。

(3) RUNSTATS:这个命令是用来收集数据库中数据的最新统计信息, 并更新到系统表中。更新统计信息将会促使优化器选择更加符合实际的高效的访问计划, 从而提高工作效率。

(4) REORG:这个命令用来重新整理数据库中数据和索引的碎片, 使其在物理上可以得以按一定规则排列, 这样可以加快检索的速度。

(5) DB2DART:这个命令是一个数据库的分析和报告工具, 它用来检查表空间, 索引以及数据库结构的正确性, 分析在性能问题上的一些原因。

(6) DB2SUPPORT:这个命令用来收集DB2和操作系统的所有相关信息并生成一个压缩文件, 可传送给优化人员进行分析。

2) 使用Load Rouner测试工具, 对软件性能指标进行了测量, 包括:

(1) 响应时间:服务器端响应时间, 客户端响应时间;

(2) 吞吐量:也就是软件系统在每单位时间内能处理多少个事务/请求/单位数据等;

(3) 资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O。

(4) 并发用户数:并发数反映了软件系统的并发处理能力, 和吞吐量不同的是, 它大多是占用套接字、句柄等操作系统资源。

2.3 问题原因归纳

1) 业务系统复杂, 不正确的逻辑实现导致数据库访问频繁, 使用过程中产生大量请求碎片。

2) 查询调用的有关业务数据表, 数据量很大, 但数据表索引不太合理。

3) 个别数据表在进行数据结构设计时, 对该表的容量没有充分考虑。

3 性能问题解决策略

软件性能需要将软件运行空间和时间综合考虑, 所以针对以上具体问题的分析, 合理平衡各种矛盾, 制定以下系统性能方案。针对原因, 制定了数据库性能调优方案。

3.1 优化数据库配置参数

系统刚开始运行时, 已经采用DB2快照等解决了某些配置参数的问题, 本次运行一段时间之后, 考虑调节以下参数:NON_HEAP_SE (DBM) 、QUERY_HEAP_SE (DBM) 、MAXAPPLS (DB) 等参数, 具体配置参照有关数据库专业资料。

3.2 利用索引机制优化数据访问策略, 对数据库表和索引进行重组优化

遵循表索引建立的的原则, 借助于DB2的自动索引建立工具把所有业务模块执行一遍, 查出所有SQL语句, 然后由DB2系统自动提出索引建议, 在此基础上按照个性要求, 进行重组优化。

3.3 把大数据表进行分区

对数据库进行分库分区设计, 分离当前业务数据和历史数据。建立分区表, 把分区表的数据放在不同的表空间, 这样避免了无关数据的访问, 提供了更好的查询性能, 而且, 此时, 方便数据的转进和转出, 去除以往的历史数据, 加入新鲜的当前数据。

3.4 物化查询表的建立

对于涉及复杂的大表或计算复杂的SQL语句, 而且其中数据不经常更改的表, 一天之内不变化, 做成物化查询表, 它可以极大地提高性能, 用这样的表来处理令人头疼的SQL语句。

3.5 调整问题查询对应的业务逻辑, 降级对公共数据资源重复频繁查询

通过调整对应业务逻辑, 降级对公共数据资源重复频繁查询, 明显提高了报表查询性能。

3.6 指导用户做好系统的日常维护

建立规范化的维护制度, 敦促客户及时发现问题, 处理问题于萌芽状态。

4 改进效果

通过以上几个方面的改进, 更新数据库后, 效果非常明显, 用户非常满意。前后效果比对数据如表1。

摘要:通过应用软件的具体案例, 结合DB2数据库的使用经验, 该文提出采用数据库技术解决软件性能问题的一些思路、原则和方法等。

关键词:DB2,软件性能,数据库优化,优化方案

参考文献

[1]杨鑫华, 丁传华, 赵慧敏.数据库原理与DB2应用教程[M].北京:清华大学出版社, 2007.

[2]王飞鹏.DB2设计与性能优化:原理、方法与实践[M].北京:电子工业出版社, 2011.

[3]牛新庄.DB2数据库性能调整和优化[M].北京:清华大学出版社, 2009.

DB2中的数据移动装入 篇5

装入命令格式与导入类似,命令关键字是Load,但是后面的参数比导入命令多的多,详细用法可以自行参考DB2文档,

装入与导入类似,都是将输入文件中的数据移入到目标表中,二者的不同点将在实例中逐步解释。

在装入之前,目标表必须已经存在。

装入的性能比导入高,原因在后面结合实例详细解释。

装入操作不记录到日志中,所以不能使用日志文件进行前滚操作。

装入分为4个阶段:

1. 装入阶段

在这个阶段发生两件事:数据存储在表中,收集索引键并排序。在装入时,DBA可以指定多长时间生成一致点。

它是装入工具的检查点。如果装入在执行期间被打断,它可以从最后一个一致点处开始继续重新执行。

2. 构建阶段

在构建阶段,基于在装入阶段收集的索引键信息创建索引。如果在构建阶段发生错误,装入工具就重启,它将从构建阶段开始处重新开始构建。

3. 在删除阶段,所有违反唯一或主键约束的行都被删除并拷贝到一个异常表(如果在语句中指定相应选项)中。当输入行被拒绝,消息文件中就生成消息。

4. 索引拷贝阶段

如果在装入操作期间为索引创建指定了系统临时表空间,并且选择了 READ ACCESS 选项,该索引数据将从系统临时表空间拷贝到原来的表空间。

装入过程的所有四个阶段都是操作的一部分,只有在所有的四个阶段都完成之后,该装入操作才算完成。在每个阶段都将生成消息,一旦其中的某个阶段发生错误,这些消息可以帮助DBA分析并解决问题。

导入操作每次插入一行数据时都要检查是否满足约束条件,并且记入日志文件中。

下面我们看一些LOAD命令特有的功能,IMPORT命令也能做的就不再详细说了。

例十二:从光标类型文件中进行装入

定义一个cursor

declare mycur cursor for select * from org

创建一个新表,结构与cursor相容

create table org2 like org

从cursor中装入

load from mycur of cursor insert into org2

除了可以从cursor中装入,还可以从文件、管道、设备中进行装入。而导入命令只能从文件中导入。

例十三:关于异常表

由用户定义的异常表可以用于存储不遵循唯一约束和主码约束的行。如果装入的时候没有指定异常表,则违反唯一约束的行将被丢弃并且将不再有机会恢复或修改。

用SAMPLE数据库中的STAFF表做实验

1. 创建一个结构与STAFF表相同的表STAFF1

CREATE TABLE STAFF1 LIKE STAFF

2. 把STAFF表中的一部分数据插入到STAFF1中

INSERT INTO STAFF1 SELECT * FROM STAFF WHERE ID<=160

3. 再创建一个结构与STAFF1相同的表STAFFEXP,作为异常表

CREATE TABLE STAFFEXP LIKE STAFF1

4. 给该异常表添加一列,因为异常表和普通表相比,前面的结构都相同,就是最后多出一列或两列(列名任意),第一列是时间戳类型,记录异常记录插入的时间,第二列是大文本类型(至少为32K大小),保存导致该条记录被拒绝的特定约束信息。本例中只添加一个时间戳列。

ALTER TABLE STAFFEXP ADD COLUMN TIME TIMESTAMP

5. 为STAFF1表创建一个唯一索引

CREATE UNIQUE INDEX IDXSTAFF ON STAFF1(ID)

6. 先运行导出命令做出一个文本文件

EXPORT TO D:STAFF.TXT OF DEL SELECT * FROM STAFF

7. 然后运行装入命令把数据再装入到STAFF1表中

LOAD FROM D:STAFF.TXT OF DEL INSERT INTO STAFF1 FOR EXCEPTION STAFFEXP

由于表STAFF1中有唯一索引,所以会有一部分数据因为违反这个约束条件而不能插入到STAFF1表中,这些记录就会插入到异常表STAFFEXP中。

注意一点,异常表必须自己先定义好,装入命令不能够自动生成异常表,如果找不到指定的异常表,就会报错。

例十四:关于DUMP文件

格式不正确的行会被拒绝。通过指定DUMPFILE文件类型修饰符可以使这些被拒绝的记录单独放在指定的文件里。

用SAMPLE数据库中的STAFF表做实验

1. 创建一个结构与STAFF表相同的表STAFF1

CREATE TABLE STAFF1 LIKE STAFF

2. 把STAFF表中的一部分数据插入到STAFF1中

INSERT INTO STAFF1 SELECT * FROM STAFF WHERE ID<=160

3. 再创建一个结构与STAFF1相同的表STAFFEXP,作为异常表

CREATE TABLE STAFFEXP LIKE STAFF1

4. 给该异常表添加一列

ALTER TABLE STAFFEXP ADD COLUMN TIME TIMESTAMP

5. 为STAFF1表创建一个唯一索引

CREATE UNIQUE INDEX IDXSTAFF ON STAFF1(ID)

6. 先运行导出命令做出一个文本文件

EXPORT TO D:STAFF.TXT OF DEL SELECT * FROM STAFF

到D盘上打开STAFF.TXT文件,把第一列等于320的行替换为:“abcf”,“aaa”,“sdfg”

7. 然后运行装入命令把数据再装入到STAFF1表中

LOAD FROM D:STAFF.TXT OF DEL MODIFIED BY DUMPFILE=d:dump INSERT INTO STAFF1 FOR EXCEPTION STAFFEXP

装入的结果报告中会有如下一条:

SQL3118W 在行 “32” 列 “1” 中的字段值不能转换为 SMALLINT 值,但是目标列不可为空。未装入该行。

SQL3185W 当处理输入文件的第 “32” 行中的数据时发生先前的错误。

打开D盘的dump.000文件,会看到造成异常的那一行数据:“abcf”,“aaa”,“sdfg”

通过这个例子,我们可以理解,如果一行数据的格式不正确,在装入的时候会遭到拒绝,该行记录会放到DUMP文件中;而如果数据格式正确,但是不满足表的约束条件,该行记录会放到异常表中。

例十五:限制装入行数

用ROWCOUNT选项可以指定从文件开始处装入的记录数

LOAD FROM D:STAFF.TXT OF DEL ROWCOUNT 3 INSERT INTO STAFF1

例十六:出现警告信息时强令装入操作失败

在某些情况下,文件中的数据必须全部成功输入到目标表中才算成功,即使有一条记录出错也不行,

在这种情况下,可以使用WARNINGCOUNT选项。

到D盘上打开STAFF.TXT文件,把第一列等于320的行替换为:“abcf”,“aaa”,“sdfg”

LOAD FROM D:STAFF.TXT OF DEL WARNINGCOUNT 1 INSERT INTO STAFF1

运行结果包含下面的警告:

SQL3118W 在行 “32” 列 “1” 中的字段值不能转换为 SMALLINT值,但是目标列不可为空。未装入该行。

SQL3185W 当处理输入文件的第 “32” 行中的数据时发生先前的错误。

SQL3502N 实用程序遇到了 “1” 个警告,它超过了允许的最大警告数。

此时无法对表STAFF1进行操作,例如

SELECT * FROM STAFF1

会返回:

ID NAME DEPT JOB YEARS SALARY COMM

------ --------- ------ ----- ------ --------- ---------

SQL0668N 由于表 “USER.STAFF1” 上的原因代码 “3”,所以不允许操作。

SQLSTATE=57016

原因是:表处于“装入挂起”状态。对此表的先前的 LOAD 尝试失败。在重新启动或终止 LOAD 操作之前不允许对表进行存取。

解决方法为:通过分别发出带有 RESTART 或 TERMINATER 选项的 LOAD 来重新启动或终止先前失败的对此表的 LOAD 操作。

包含TERMINATER的LOAD命令可以终止装入进程,使目标表恢复正常可用状态:

LOAD FROM D:STAFF.TXT OF DEL TERMINATE INTO STAFF1

包含RESTART的LOAD命令可以在源文件修改正确的时候使用,使装入进程重新开始:

LOAD FROM D:STAFF.TXT OF DEL RESTART INTO STAFF1

例十七:防止产生警告信息

使用NOROWWARNINGS文件类型修饰符可以禁止产生警告信息,当装入过程可能出现大量警告信息,而用户对此又不感兴趣的时候,可以使用该选项,这样可以大大提高装入的效率

到D盘上打开STAFF.TXT文件,把第一列等于320的行替换为:“abcf”,“aaa”,“sdfg”

LOAD FROM D:STAFF.TXT OF DEL MODIFIED BY NOROWWARNINGS INSERT INTO STAFF1

运行完的结果中,第32行出错,该行无法装入,但是不产生警告信息。

例十八:生成统计数据

使用STATISTICS选项可以在装入的过程中生成统计数据,这些统计数据可以供优化器确定最有效的执行SQL语句的方式。

可以对表和索引产生不同详细程度的统计数据:

① 对表和索引产生最详细的统计数据:

LOAD FROM D:STAFF.TXT OF DEL REPLACE INTO STAFF1 STATISTICS YES WITH DISTRIBUTION AND DETAILED INDEXES ALL

② 对表和索引都产生简略的统计:

LOAD FROM D:STAFF.TXT OF DEL REPLACE INTO STAFF1 STATISTICS YES AND INDEXES ALL

其它组合可以参考DB2文档。

注意:STATISTICS选项只能和REPLACE兼容,与INSERT选项不兼容。

另外,通过STATISTICS选项做完统计,我们看不到任何直接的结果,如果想查看其结果,需要到系统表中自己查询。

例十九:解除检查挂起状态

1. 连接到SAMPLE数据库上:

Connect to sample

2. 创建一个结构与staff表相同的表:

CREATE TABLE STAFF1 LIKE STAFF

3. 给该表添加一个检查约束:

alter table staff1 add constraint chk check(dept<100)

4. 到D盘上打开STAFF.TXT文件,把最后一行数据的第三列改为150,这样该条数据就不满足第3步加上的检查约

束条件了,然后用Load命令从文件中装入数据到staff1表中:

LOAD FROM D:STAFF.TXT OF DEL INSERT INTO STAFF1

5. 此时运行查询命令:

Select * from staff1

会得到错误信息:

SQL0668N 由于表 “USER.STAFF1” 上的原因代码 “1”,所以不允许操作。

SQLSTATE=57016

原因是装入时有数据违反了检查约束,造成表处于检查挂起状态。

6. 解除表的检查挂起状态,使用:

set integrity for staff1 check immediate unchecked

再次运行查询命令:

Select * from staff1

发现表可以正常使用了,其中的违反检查规则的数据也存在。

例二十:性能因素

在从文件向表导入数据的时候,当数据量特别大的情况下,装入命令会明显体现出优势,原因是它不像导入命令每次插入一行,并且在每行都要检查是否满足约束条件,装入命令从输入文件读出数据构建页,把这些页直接写入数据库,并且在每一行数据装入时不判断是否满足约束,另外装入命令不写日志,所有这些因素都导致装入的效率高于导入。

另外,装入命令还有一些选项可以控制性能因素:

1. COPY YES/NO和Nonrecoverable

① Nonrecoverable(不可恢复的):指定装入操作不可恢复,并且不能由后续的前滚操作恢复。前滚操作忽略事务并且标记正在装入数据的表为“无效”。

② Copy No(默认选项):在这种情况下,如果表所在数据库的归档日志处于启用状态,则装入完成后,表所在的表空间将处于备份挂起状态,直到数据库或表空间备份完毕,该表空间才成为可写表空间。原因是装入操作造成的变化没有被记录,所以要恢复装入操作完成后发生的故障,备份数据库或表空间是必要的。

③ Copy Yes:在这种情况下,如果数据库的归档日志启用,装入操作的改变将被保存到磁带、目录或TSM服务器,并且表空间将不再处于备份挂起状态。

2. Fastparse

该文件类型修饰符用于减少数据检查次数。它只能用于在数据已知正确的情况下,尤其适用于DEL和ASC类型的文件。

3. Anyorder

如果SAVECOUNT选项没有使用,该参数允许不遵照输入文件中的数据顺序进行装入,在SMP(对称多处理机)系统上CPU_PARALLELISM选项大于1的时候,该参数会提高装入的性能。

4. Data Buffer

该参数用于指定从堆栈分配得到的4K大小的内存页面的数目,作为装入的内部缓冲区,指定一个大缓冲区有助于提高装入的性能。

5. CPU_PARALLELISM

该选项只能用于SMP系统上,可以指示使用多少进程或线程解析、转换、格式化数据。

6. Disk_Parallelism

DB2数据库 篇6

Cotner在演讲中表示, IBM的这一举措是源自客户对于NoSQL技术的需求在不断上涨。他说:“所有的DB2和Informix用户, 都能够在现有的IT系统中使用到这一技术, 并且不用支付额外的费用。而IBM将NoSQL添加到传统关系型数据库中, 将在满足用户的需求基础上, 让过渡过程变得更加平滑。”

在近几年里, NoSQL数据库技术已经得到了越来越多的关注与应用, 这一技术能够使得企业用户更加高效地存储并分析海量数据, 而这一点是传统关系型数据库面临的最大问题。

DB2数据库在软件中的应用技巧 篇7

数据库是计算机应用系统中的一种专门管理数据资源的系统,数据有多种形式,如文字、数码、符号、图形、图像以及声音等,数据是所有计算机系统所要处理的对象。简言之,数据库是集中存放的大批数据文件。DB2是一个高端数据库管理系统,它的最大特点是稳定、可靠和性能卓著。本文总结了作者过去从事DB2数据库应用开发和系统管理的一些应用技巧,希望能借此和业内朋友进行交流。

2. DB2数据库简介

DB2是IBM公司的产品,支持从PC到UNIX,从中小型机到大型机,从IBM到非IBM各种操作平台。它既可以在主机上以主、从方式独立运行,也可以在客户、服务器环境中运行。其中服务平台可以是OS/400,AIX,0S/2,HP-UNIX,SUN-Solaris等操作系统。近日,IBM日前宣布DB2 UDB Express正式上市。据介绍,DB2 UDB Express是面向中型市场的、功能齐全的新型数据库,可以实现自动安装而无需人为干预,能够提供65种自动工具。DB2 UDB Express能够运行Windows和Linux平台,并有各种主要语言版本,使商业伙伴的一些关键垂直市场(如零售、制造和银行)的解决方案,可针对客户的应用进行预先配置。DB2数据库核心又称作DB2公共服务器,采用多进程多线程体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能。DB2数据库具有以下特色:一是支持面向对象的编程,DB2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索,可以建立用户数据类型和用户自定义函数;二是支持多媒体应用程序DB2,支持大二分对象(BLOB),允许在数据库中存取二进制大对象和文本大对象;三是具有备份和恢复能力;四是支持存贮过程和触发器,用户可以在建表时显示和定义复杂的完整性规则;五是支持SQL查询。

3. DB2数据库的软件中的应用

DB2数据库在软件中的应用包括数据库设计、存储结构优化、SQL语句优化、查询优化等多个方面。

3.1 数据库设计

数据库设计包括逻辑设计和物理设计。逻辑设计去除所有冗余数据,提高数据吞吐率,保证数据完整性,清晰表达数据元素之间关系;物理设计根据业务规则,确定对关联表的数据量大小、数据项访问频度,适当提高数据冗余设计。在整个数据库设计过程中,要遵循以下设计准则:(1)数据条块化。如果一个表的记录数超过一定规模,则其基本查询操作也会受到影响。此时,需要对数据进行条块化处理,一般可将该表进行水平划分,把最近、最常用的数据和历史的、不常用的数据划分开来,或者根据地理位置、部门等进行划分,也可进行垂直划分,即把一个属性列很多的表分割成多个小表,比如把经常用到的属性放在一个表里,不常用到的属性放在另一个表里,这样可以加快表的扫描,提高查询效率。(2)选择合适的数据类型。对每一属性选择什么样的数据类型很大程度上应该依据表的要求,但是在不违背表要求的前提下,选择适当的数据类型可以有效地提高系统性能。此外,DB2具有自定义类型UDT,用户可以根据自己的需要来定义数据类型。

3.2 存储结构优化

由于在DB2数据库中,数据都是存贮在表空间中,所以对存储结构的优化就是对表空间设计和管理的优化。一般说来,DB2表空间所跨的驱动器越多、越快,则潜在的性能将越好。另外,通过创建不止一个的用户表空间也是增强性能的好方法。在下面三种情况下,使用多个表空间就很有用:(1)控制I/O,并且这些表空间可以位于不同的驱动器上;(2)使用不同的页面大小;(3)控制缓冲池。在决定页面大小时要注意,DB2在一页上最多只能放255行,剩余的空间将不被使用。例如,如果平均行长度是50字节,那么一页最多使用的空间是50×255=12 750字节。如果将该表放在页面大小为16K或者32K的表空间中,那么有些页就会被浪费。

3.3 SQL语句优化

SQL是用于存取数据的根本手段,高效的SQL语句能够成倍地提高应用程序的效力。一个正确设计的数据库,由于不合理的程序设计及SQL语句仍然会带来大多数性能问题,主要是程序员对数据库的配置不太清楚。因此,在开发过程中,要根据数据操作类型对程序员写的SQL语句进行分类,还应该对数据操作进行跟踪,找到那些最耗费资源和时间的操作,并对这些操作进行分析,找到优化的办法。通常情况下,可以采用下面的方法优化SQL对数据操作的表现:(1)减少对数据库的查询次数,即减少对系统资源的请求。(2)避免采用LIKE通配符匹配查询,通配符匹配查询特别耗费时间。即使在条件字段上建立了索引,也还是采用顺序扫描的方式。(3)限制动态SQL的使用,虽然动态SQL很好用,但是即使在SQL共享池中有一个完全相同的查询值,动态SQL也会重新进行语法分析。

3.4 查询优化

DB2是一种高性能的数据库管理系统,应用程序的执行最终归结为数据库中SQL语句的执行,而查询操作在各种数据库操作中所占据的比重最大,查询的优劣在很大程度上反映了一个数据库性能的优劣,SQL语句的执行效率最终决定了数据库的性能。SQL查询语句可以有很多种查询存取策略,不同的查询策略可使服务器的反应不同,性能可以相差很大,因此采用适当的查询策略可使系统性能大大提高。在这里我们认为合理使用索引是提高查询优化的主要措施。对于数据库中查询引用的每一个表,如果该表没有索引,则必须对该表执行表扫描。表越大则表扫描时间越长,如果该表有索引,使用优化器估计索引扫描比表扫描快,则将选择索引。索引文件一般较小,读取时间相对较少,尤其在表增大时更是如此。在多数情况下DB2使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。当搜索少量行时索引最为有用。在查询中,以下数据查找语句应考虑使用索引:(1)匹配一个特定值的查找。这些查询将只提取满足某个特定等式的少数行。(2)匹配一定范围值的查找。这些查询将只提取少量的行。(3)用于连接的查找。用作连接键的列通常是好的索引候选。(4)按照特定顺序提取数据的查找。如果希望结果集被排序,就可以在被排序的列或列组上使用索引。

总之,随着数据库技术、操纵和管理数据库的大型软件以及用户需求的发展变化,将使得数据库系统在计算机系统和各项科研工作中处于重要位置。在数据库的管理和开发过程中,优化设计可以提高数据库的性能,特别是大型数据库,优化过程更为重要。

参考文献

[1]萨师煊,王珊.数据库系统概论(第3版)[M].北京:高等教育出版社,200O:53.

[2]庄济诚.DB2数据库管理与应用教程[M].北京:清华大学出版社,2004:18-20.

[3]侯迪,容红强.DB2UDB V7.1通用数据库系统开发[M].北京:机械工业出版社,2002:327.

[4]李文文.DB2性能优化主要方法[J].华南金融电脑,2002,6:56-58.

上一篇:基于检测跟踪下一篇:能力为导向