`
loveseaside
  • 浏览: 151325 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
阅读更多

  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表达式
收藏http://blog.csdn.net/interhui/archive/2006/10/22/1345513.aspx
例如
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,这时就不允许手动向其中填入数据,而导入数据和添加数据的时候恰恰向这个字段填入数据。解决办法:确定数据列,不用*代表所有列。
http://blog.csdn.net/interhui/archive/2006/10/22/1345513.aspx
分享到:
评论

相关推荐

    db2学习笔记(包括常用命令)

    ### DB2 学习笔记详解 #### 一、DB2系统架构与管理 DB2,全称为Database 2,是IBM公司开发的一款关系型数据库管理系统。它具备强大的数据处理能力和高度的安全性,广泛应用于企业级的数据管理和分析。DB2的设计...

    db2应用基础学习笔记

    "db2应用基础学习笔记"涵盖了DB2的基本概念、安装配置、数据操作、查询优化、安全性及备份恢复等多个方面,旨在帮助初学者快速入门并掌握DB2的基础使用。 1. **基本概念**:DB2是一款支持SQL语言的数据库系统,它...

    DB2数据库学习笔记

    ### DB2数据库学习笔记知识点详解 #### 一、DB2系统架构及管理命令 ##### 1. DB2的层级概念 - **域**: 指的是DB2的管理范围,通常对应于一个物理服务器或者一组逻辑相关的服务器。 - **实例**: 实例是在一个操作...

    db2实践笔记

    db2实践笔记,平时在项目的操作中,进行db2数据库操作的命令

    db2 学习笔记

    db2学习笔记

    DB2学习笔记.docx

    DB2学习笔记.docxDB2学习笔记.docx

    DB2自学笔记大原稿

    ### DB2自学笔记知识点概述 #### 一、DB2安全机制与权限管理 **DB2安全机制概述:** - **认证(Authentication)与授权(Authorization):** DB2的安全特性主要体现在认证与授权上。认证是确认用户身份的过程;而...

    DB2学习笔记与总结

    这份"DB2学习笔记与总结"包含了丰富的知识内容,旨在帮助读者深入理解和掌握DB2的相关技术。以下是对其中主要知识点的详细阐述: 1. **数据库基本概念**:首先,了解数据库的基本概念至关重要,包括数据模型(如...

    db2学习笔记(个人总结)

    本笔记将聚焦于DB2的学习,同时对比分析Oracle和MySQL两种流行数据库的分页实现,旨在帮助读者深入理解数据库分页机制。 首先,让我们了解一下分页在数据库中的重要性。在大数据量的查询场景下,一次性返回所有结果...

    IBM某员工透漏DB2笔记

    文件"DB2笔记.doc"可能是详细的文字记录,涵盖了大量的技术细节和实践经验,可能包括代码示例、步骤指南以及问题解答。这种文档形式便于读者逐步学习和查阅,有助于深化对DB2的理解。 而"presentation"可能是PPT...

    db2 连接数据库笔记

    这篇名为“db2 连接数据库笔记”的博文主要探讨了如何连接到DB2数据库,这对于开发者来说是一项基础但至关重要的技能。下面将详细介绍DB2数据库连接的相关知识点。 1. **JDBC驱动**:在Java环境中连接DB2,我们通常...

    DB2 DBA 学习笔记

    DB2学习笔记,有些地方可能写的很乌龙,加上网上搜索汇集的,反正忘记了的命令上来搜搜看就是了。

    db2 学习笔记 权限 编目等

    本篇学习笔记主要探讨了这两个方面。 首先,DB2权限系统提供了一套严谨的权限级别,确保了对数据库的访问和操作得到适当控制。以下是五种主要的权限: 1. SYSADM(系统管理员)权限:这是最高级别的权限,类似于...

    DB2学习笔记,各个细节部分介绍

    - `ALTER TABLE tablename VOLATILE`:这个命令用于强制DB2使用索引执行查询,提高查询性能。通常在需要快速访问特定行且已有合适索引的情况下使用。 3. **DB2配置参数详解**: - `DFT_QUERYOPT`:影响查询优化...

    db2读书笔记

    从给定的“db2读书笔记”中,我们可以提炼出一系列关于DB2数据库管理系统的深入知识点,这不仅涉及了DB2的基本配置与管理命令,还深入探讨了其内部架构、数据存储策略以及性能调优技巧。以下是根据标题、描述、标签...

    DB2安装配置学习笔记.doc

    DB2 安装配置学习笔记 DB2 安装配置学习笔记是一份关于 DB2 在 Unix 或 Linux 上的安装配置的学习笔记,涵盖了安装前的准备工作、DB2 安装、license 注册等多个方面的知识点。 安装前的准备工作 在安装 DB2 之前...

    db2数据库学习笔记.pdf

    db2数据库学习笔记.pdf

    DB2命令 个人笔记

    根据提供的文件信息,我们可以整理出一系列与DB2命令相关的知识点,包括数据库管理、表操作、备份与恢复等关键领域。 ### 数据库管理 #### 查看数据库目录 - **命令**: `db2listdbdirectory` - **功能**: 列出当前...

Global site tag (gtag.js) - Google Analytics