DB2使用笔记

 
DB2的用户名和密码和系统用户名密码是一致的
 
编目数据库:为了存取数据库,DB2要使用多种目录,这些目录允许DB2了解要查找的数据库是驻留在本地还是驻留在远程系统上。其中,系统数据库目录包含了一个指针列表,通过这些指针可以知道在哪里能够找到所有已经编目的数据库,接连目录包含了远程系统和远程实例的相关存取信息。
 
char与varchar的用法
如果希望列中的数据值大小接近一致,使用char,而数据值长度相差较大时使用varchar
 
SQL语句优化
1. 要是一条语句能完成的,就不要用多条语句完成
例如 insert into a(id, name) values (1, “hui”); insert into a(id, name) values (2,”chen”)
合并为insert into(id, name) a values (1, ”hui”),(2, “chen”)
2. 尽量把多个SQL语句合并成一个SQL表达式
例如
If (a<b) then
insert into(id, name) a values (1,a)
else
insert into(id, name) values (1,b)
end if;
可以变成
insert into a(id, name) values (1,
CASE
WHEN (a<b) THEN a
ELSE b
END);
3. SQL一次只处理一个集合语义
 
事务处理通常使用COMMIT进行数据提交和ROLLBACK进行数据回滚。为了防止并发性出现的问题例如丢失更新,脏数据,幻想,不可复读等,采用了一些隔离,例如“可重复的读”,“读稳定性”,“游标稳定性”,“未提交的读”。
 
选择适当的隔离
1. 如果正在使用只读数据库上执行查询,或者正在执行查询而不考虑是否有未提交的数据值返回,则使用“未提交的读”隔离级别(需要只读事务,不需要较高数据稳定性)
2. 如果希望在不堪见未提交数据值的情况下获得最大的并发性,则使用“游标稳定性”隔离级别(需要读/写事务,不需要较高数据稳定性)
3. 如果希望获得并发性以及限定的行在单个事务执行期间保持稳定,则使用“读稳定性”隔离级别(需要是只读或读/写事务,并需要较高的数据稳定性)
4. 如果执行查询,并且不希望看到对产生的结果数据集进行更改,则使用“可重复的读”隔离级别(需要是只读事务,并需要极高的数据稳定性)
模式用于数据库种创建数据库对象的高级限定符,是数据库对象的集合,其中包括了表,视图,索引,触发器等。多张表可以有同一名称,但是要有不同的模式名。
 
表空间组织
如果表很大,将表空间分配过大,会因此浪费很大的空间。它还会使I/O和缓存的效率降低,因为每个页的实际有用内容很少。如果可以将表放到具有较小页的表空间中,以及可以充分利用较大的页大小,那么最常用的访问将确定哪一个更好。如果通常是顺序访问大量的行,那么比较大的页会比较有效。如果随机访问行,那么较小的页会更好地利用缓冲区,因为同样地存储区可以容纳更多地页。
EXTENTSIZE是在将数据写到下一个容器之前写入到当前容器中的数据的页数(如果表空间存在多个容器);PREFETCHSIZE是指在执行数据预存时将从表空间读取的页数,当数据库管理器确定顺序I/O是适当的,并且确定预取操作可能有助于提高性能时,会使用预取操作。将PREFETCHSIZE值显式地设置成表空间地EXTENTSIZE值与表空间容器数地乘积的倍数。
 
表空间的考虑
1. 确定表设计所给出的约束
2. 考虑如果让表空间中的表具有不同的设置,是否有可能显著提高性能
3. 一旦做出了一个试验性的表空间设计,那么就必须考虑缓冲池的利用率。这可能会使前面的表空间设计产生一些变化。
4. 必须给表空间分配容器
 
缓冲池的利用率
       使用多个用户表空间的最重要原因是管理缓冲区的利用率。一个表空间只能与一个缓冲池相关联,而一个缓冲池可用于多个表空间。
       如果总的缓冲区大小太大,并且没有足够的存储器可用来分配给它们,那么将为每种页大小分配最少的缓冲池,性能就会急剧下降。
       如果有一些具有不同页大小的表空间,那么每种页大小必须至少有一个缓冲池。
 
存储器组织
SMS(System Managed Space)更容易管理,尤其是对那些包含LOB的表的表空间而言;DMS(Database Managed Space)通常有更好的性能。
确定更改是否有益,最好的方法就是进行基准测试。
 
DB2的三种约束
1. 唯一性约束。用于确保列中的值是唯一的。
2. 引用完整性约束。用于定义表间的关系,并确保这些关系一直有效
3. 表检查约束。用于验证列数据没有违反为类的规则
 
外键的好处
1. 减少数据库冗余
2. 避免不存在的信息带来的麻烦
3. 避免由于当前表数据变动而造成了其他表的数据变动
 
DB2中的视图无法更改,必须用所希望的更改重新创建
 
存储过程的有点
1. 减小了客户机与服务器之间的网络使用率(一次网络通信便能批量执行SQL语句)
2. 增强了硬件和软件的功能
3. 提高了安全性(减少需要特权的用户数)
4. 减少了开发成本(任务的复用)并且提高了可靠性
5. 集中处理公共例程的安全性、管理和维护
 
应该限制访问权限的表(应该撤销这些表PUBLIC SELECT访问权)
SYSCAT.DBAUTH
SYSCAT.TABAUTH
SYSCAT.PACKAGEAUTH
SYSCAT.INDEXAUTH
SYSCAT.COLAUTH
SYSCAT.PASSTHRUAUTH
SYSCAT.SCHEMAAUTH
 
比较有用的目录表
SYSCAT.COLUMNS:包含每一行对应于表或视图中定义的列
SYSCAT.INDEXCOLUSE:包含每一行包含的所有列
SYSCAT.INDEXES:包含每一行对应于表或视图中定义的每个索引
SYSCAT.TABLES:所创建每个表,视图,别名对应其中一行
SYSCAT.VIEWS:所创建每个视图对应其中一行或几行
 
通过索引保持数据唯一性:CREATE UNIQUE INDEX INDEXNAME ON TABLE (COLUMN)
消除重复行:SELECT DISTINCT COLUMN FROM TABLE
 
使用DB2(XA兼容)事务管理器
1. 在相应数据中创建必须的表
2. 若物理上是远程的,则设置数据库服务器以使用相应的通信协议,同时编目节点和数据库,以便在数据库服务器上标识这些数据库
3. 预编译应用程序以指定类型2连接(即在PRECOMPILE PROGRAM命令上指定CONNECT2)和两阶段落实(即在PRECOMPILE PROGRAM命令上指定SYNCPOINT TWOPHASE)
4. 配置DB2事务管理器(或配置XA兼容事务管理器以使用DB2数据库)
 
“X/Open 分布式事务处理”(DTP)模型包括3个相关组件
1. 应用程序(AP):定义事务边界,并定义构成该殊无的应用程序特定的操作
2. 事务管理器(TM):想殊无指定标识符,监视它们的进程,并负责处理事务的完成和失败
3. 资源管理器(RM):提供对共享资源(如数据库)的存取
 
 
DB2恢复类型
1. 崩溃恢复:通过回滚未提交的事务防止数据库处于不一致状态
2. 版本恢复:通过使用Backup命令获取备份镜像来恢复
3. 前滚恢复:通过使用完全数据库备份用Rollforward进行恢复
 
数据库设置为可恢复数据库的因素:
1. 如果数据库仅仅是用来进行查询,日志中没有工作事务单元,那么该数据库就没有必要被设置为可恢复的数据库;
2. 如果该数据库的数据稳定或者数据变更少,而且数据可以容易重建,那么该数据库就没有必要被设置为可恢复的数据库;
3. 含有不易重建的数据的数据库应该配置为可恢复的数据库;
4. 如果存在大量数据更新的行为,应该考虑使用一个可恢复的数据库;
 
DB2备份前准备
1. 必须拥有SYSADM、SYSCTRL或SYSMAINT权限才可以执行备份;
2. 数据库可以是本地数据库或者远程数据库,它本身备份保存在数据库服务器上;
3. BAKCKUP命令可以和外挂存储器管理程序直接对备份进行管理,如ADSM;
4. BAKCKUP命令可以直接将它的输出通过操作系统(OS/2除外)传送到磁盘上;
5. BAKCKUP命令在任何平台的备份可以直接将它的输出传送到硬盘上;
6. 可以创建多份备份文件,以包含已经备份过的数据。
 
DB2恢复前的准备
1. 必须拥有SYSADM、SYSCTRL或SYSMAINT权限才可进行恢复,如果拥有必须拥有SYSADM、SYSCTRL权限还可以将数据恢复到一个新的数据;
2. 只能对已经用BACKUP命令进行备份的数据库使用RESTORE命令;
3. RESTORE命令可以和外挂的存储器相连;
4. RESTORE要求对数据库的排他连接。当数据库正在恢复时,其他程序不能在这个数据库上运行。一旦开始运行,它将防止其他程序存取当前数据库,直到恢复完毕;
5. 数据库可以是本地数据库或者远程数据库
 
DB2中,有两种类型的DB2数据库集群(cluster)
1. 高可用性
2. 高可伸缩性
 
高可伸缩性集群(也称为数据库分区)结合了多台服务器的聚集能力,以产生高性能解决方案。该技术通常用于构建数据仓库或大型事务系统,而这样的数据仓库或系统中,单个服务是无法实现性能目标的。
 
所有数据更改都记录在DB2事务日志中,事务日志主要用于崩溃恢复和在故障之后恢复系统。
 
用户出口程序只是一种通过绛县有日志文件复制到安全位置来提供更多保护的方法。
 
日志传送是一种方法,它自动从DB2服务器备份事务日志,并使该备份自动对备份服务器可访问。
 
DB2上设置和配置日志传送之前必须满足的先决条件
1. 主系统和备用系统都必须运行统一版本DB2;
2. 备用系统可用于数据库和日志文件的磁盘空间必须至少和主系统一样多;
3. 必须在备用服务器上配置嘱咐武器为数据库维护而运行的所有自动化进程;
4. 备用服务器上的日志归档目标必须可访问;
5. 必须在备用系统上恢复完整的数据库备份,以初始化热备用。
 
高可用性集群配置
1. 空闲备用
2. 活动备用
3. 相互接管
4. 平衡相互接管
 
对于分区数据库系统,快速通信管理器(FCM)需要足够多的内存空间,尤其在fcm_num_buffers的值较大时。另外,FCM内存需求是从“FCM缓冲池”分配的,或是从“数据库管理器共享内存”和“FCM缓冲池”分配的,这取决于分区数据库系统是否使用多个逻辑节点。
 
       设置内存分配参数的首要原则是:除非经过慎重考虑,否则切勿将这些参数设置为最大值。此原则甚至适用于具有最大内存的系统。许多影响内存的参数可使数据库管理器能够方便快捷地占用计算机上的所有可用内存。此外,在管理大容量内存时,可能给数据库管理部件带来额外的工作,因而产生更多的开销。
 
使用控制中心的健康中心使用程序或系统监控程序来收集有关目录高速缓存、程序包高速缓存和共享工作区的访问率信息。
1. 如果发生许多SQL0973错误,则说明groupheap_ratio的设置值太高。
2. 如果内存跟踪程序显示应用程序控制堆的平均和最大使用量远远低于app_ctl_sz*(100-groupheap_ratio)/100,则应减少app_ctl_heap_sz配置参数的值。
3. 如果高速缓存使用量指示高速缓存达到其限制值,则应增加group_heap_ratio配置参数的值或减少应用程序组中的应用程序数量。
4. 几个参数的内存分配上限可能超出了现有硬件和操作系统的内存容量。这些限制允许用于将来的内存增长。
 
预读取大小可以显著影响性能,特别是对大表扫描更是如此。使用数据库系统监视器和其他系统剑术工具来帮助调整表空间的PREFETCHSIZE。你可以收集如下信息:
1. 有I/O等待你的查询,这可使用你的操作系统可用的监视工具来获知。
2. 正在进行预取,可查看数据库系统监视器提供的pool_async_data_reads(缓冲池异步数据读取)数据元素来获知。
如果有I/O等待并且该查询是预取数据,你可以增加PREFETCHSIZE的值。如果预取程序不是I/O等待的原因,增加PREFETCHSIZE值将不会改进查询的性能。
 
       基于块的缓冲池的最佳使用情况取决于指定的块大小。块大小是执行顺序预取的I/O服务器考虑按其执行基于块的I/O的粒度。数据块是再容器中按其分割表空间的粒度。因为可以将具有不同数据块大小的多个表空间绑定到用同一块大小定义的缓冲池,所以要考虑数据块大小如何与块大小交互,以便有效使用缓冲池内存。在下列情况下,可能浪费缓冲池内存:
l         如果数据块大小(它确定预取请求大小)小于为缓冲池指定的BLOCK_SIZE。
l         如果在预取请求中请求的某些页已存在与缓冲池的页区域中。
 
要创建基于块的缓冲池,使用CREATE和ALTER BUFFERPOOL语句,基于块的缓冲池具有下列限制:
l         不能同时基于块和使用扩充存储器来建立缓冲池。
l         基于块的I/O支持和AWE支持不能由缓冲池同时使用。当对给定的缓冲池同时启用了AWE支持和基于块的I/O支持时,AWE支持优先于基于块的I/O支持。在此情况下,对该缓冲池禁用基于块的I/O支持。当禁用AWE支持时,不重新启用基于块的I/O。
 
使用配置参数num_ioservers配置足够的I/O服务器,可以大大提高可使用数据预取的查询的性能。要使并行I/O的机会最大化,请将num_ioservers设置为至少等于数据库中的物理磁盘数。
高估I/O服务器的数目要好于低估I/O服务器的数目。如果指定了多余的I/O服务器,虽然这些服务器得不到使用,但其内存页会被调出。因此,性能不会收到影响。每个I/O服务器进程均有编号。数据库管理器始终使用编号最低的进程,因此某些编号较高的进程可能永远得不到使用。
要确定所需的I/O服务器数目,请考虑下列因素:
l         可以同时将预取请求写入I/O服务器队列的数据库代理进程的数目。
l         I/O服务器可并行工作的最大程度。
 
排序性能准则
下列元素影响排序性能。
l         数据库配置参数的设置如下
n         排序堆大小(sortheap):它指定要用于每个排序的内存量。
n         排序堆阈值(sheapthres)和共享排序的排序堆阈值:它们控制可用于整个实例中所有排序的内存总量。
l         涉及到大量排序的语句
l         丢失可帮助避免不需要的排序索引
l         不将排序最小化的应用逻辑
l         并行排序,它改善排序性能,但只是在语句使用分区内并行时才可进行。
 
两个数据库管理器配置参数提供了各自控制这些因子的能力:
l         max_connections参数:它指定已连接的应用程序数。
l         max_coordagents参数:它指定可以处理的应用程序请求数。
当max_connections的值大于max_coordagents的值时,启用连接集成器。因为每个活动协调代理进程都需要全局资源开销,所以这些代理进程数越大,达到可用数据库全局资源上限的机会也就越大。要防止达到可用数据库全局资源的上限,可将max_connections的值设置为高于max_coordagents的值。
 
对于具有许多相对瞬时连接的因特网应用程序或相似类型的应用程序,连接集中器通过允许有效地处理更多客户机连接来改善性能。它也减少每个连接的内存使用,并减少上下文转接的次数。
当max_connections的值大于max_coordagents的值时,启用连接集成器。
当应用程序使用连接池或连接集中器时,调整控制高速缓存数据块大小的参数,以获取最佳性能。
当启用连接集中器时,num_poolagents指定的代理进程数仅仅建议性的。在任何给定的时间内,代理进程池中可能有更多的代理进程。
 
如果系统中没有定义任何数据库,且你正在基于UNIX的系统上运行DB2扩充企业版,而该实例又没有数据库,则应使用DB2NCRT命令来调整该数据库系统。但是,如果你已有数据库,使用DB2START ADDNODE命令,以确保在调整系统时为每个现存的数据库创建一个数据库分区,在Windows NT上,始终都不应手工编辑节点配置文件(db2nodes.cfg),因为这会该文件带来不一致性。
 
配置参数配置DB2
l         使用控制中心。“配置实例”笔记本可用来设置在客户机或服务器上的数据库管理器配置参数。“配置数据库”笔记本可用来改变数据库配置参数的值。DB2控制中心还提供了“配置顾问程序”,可用来改变配置参数的值。此顾问程序根据你对一组问题提供答案,来为参数生成值。
l         使用命令行处理器,可以快速方便地输入更改这些设置地命令。
对于数据库管理器配置参数:
n         GET DATABASE MANAGER CONFIGURATION(或GET DBM CFG)
n         UPDATE DATABASE MANAGER CONFIGURATION(或GET DBM CFG)
n         RESET DATABASE MANAGER CONFIGURATION(或GET DBM CFG)
n         AUTOCONFIGURE将所有数据库管理器参数复位到其默认值
对于数据库配置参数:
n         GET DATABASE CONFIGURATION(或GET DB CFG)
n         UPDATE DATABASE CONFIGURATION(或GET DB CFG)
n         RESET DATABASE CONFIGURATION(或GET DB CFG)
n         AUTOCONFIGURE将所有数据库参数复位到其默认值
l       使用应用程序编程接口(API)。这些API可以很容易地从应用程序或主机语言程序中调用。
l       使用“配置助手”,只能使用“配置助手”在客户机上设置数据库管理器配置参数。
 
在DB2中添加和导入数据的时候,又是会出现“ SQL3120W  在行 "4" "1" 中的字段值不能转换为 INTEGER 值,但是目标列不可为空。未装入该行。”类似的错误。经常出现的问题主要是:可能有一个字段定义为INTEGER而且每次自增1,这时就不允许手动向其中填入数据,而导入数据和添加数据的时候恰恰向这个字段填入数据。解决办法:确定数据列,不用*代表所有列。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值