DB2 UDB V8.1 管理 学习笔记

DB2 学习笔记 - AIview.com

Last updated on Wednesday, August 24, 2005 Skip to navigation

You are here: Home » Study Notes » Individual | August 2004

DB2 UDB V8.1 管理 学习笔记(一)

摘要: 工作学习之余对DB2使用知识的一点零散记录,包括DB2的基础知识、数据库管理、性能调优以及开发等方面,内容非常零散,而且有时不免理解有误,可能并未回头改掉,望见谅,仅供参考。

版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。
原文出处: http://www.aiview.com/
作者: 张洋 Alex_does@hotmail.com
写于: 2004-08-05 最后更新: 2005-08-23


 目录
 

  1. 正文
  2. DB2 基本概念
  3. 数据库的性能
  4. 与性能相关的主要参数
  5. DB2的常用命令
  6. DB2 SQL 相关
  7. 参考资源

正文

工作学习之余对DB2使用知识的一点零散记录,包括DB2的基础知识、数据库管理、性能调优以及开发等方面,内容非常零散,而且有时不免理解有误,可能并未回头改掉,望见谅,仅供参考。

DB2 基本概念

在DB2中由上至下的几个概念:

实例(Instance),
数据库(Database),
表空间(TableSpace),
容器(Container)

在一个操作系统中,DB2数据服务可以同时运行多个实例(有别于Oracle在一个系统内只能起一个实例).

数据库定义在实例中,一个实例可以包含多个数据库。在同一个实例中的不同数据库是完全独立的,分别拥有自己独立的系统编目表。

表空间有2种管理方式:

DMS(Database management Space)方式
SMS(System manegement Space)方式

DMS与SMS方式在表空间建立时指定,建好后不能转换。对于DMS方式,一个表空间对应了一个或多个容器(Container),容器指定了数据的物理存储位置。对于SMS方式,只能够指定一个目录,不能够增加。

表空间具有以下类型:

系统编目表空间(SysCatSpace)
系统临时表空间(SysTempSpace)
用户表空间(UserSpace)
用户临时表空间(UserTempSpace)

一个数据库中必须存在两个系统基本的表空间,分别是系统编目表空间与系统临时表空间。在数据库中创建的任何对象都以在系统编目表空间中增加记录的方式体现,对于临时表空间,其占用磁盘大小是根据使用情况动态伸缩的,即仅在需要时才分配磁盘空间,并在使用后进行回收。此外,若用户需要创建表,则需要创建用户表空间,若需要使用临时表,则需要创建用户临时表空间。

容器分为三种类型:

Files 文件
Devices 设备
Directory 目录

文件与设备,用于DMS方式的表空间;

目录,用于SMS方式的表空间,此种方式不需要人工管理数据存储文件,DB2可根据情况在目录中自动增加存储文件,只要磁盘空间允许。

实质上,表空间是数据存储的逻辑位置定义,容器则是数据存储的物理位置定义。

数据库的性能

影响一个数据库的性能主要有以下因素:

磁盘(Disk)
内存(Memory)
处理器(CPU)
网络(Network)

其中以磁盘最为显著,90%的性能瓶颈可能来自于磁盘的IO竞争;

其次是内存,一方面是指物理内存的总量要满足需求,另一方面是指与内存相关的配置参数应正确配置;

当然处理器的性能也很重要,多路CPU会对哪些依赖计算能力的复杂SQL查询起到显著的效果;

网络不属于主要因素,属于客观的环境因素,是指过慢的网速会对数据的传输造成影响。以下列出一些对于提高数据库性能有效的方法:

对于运行数据库服务的服务器可以尽可能的配置多块物理磁盘,每块的容量不必太大,这样可以有效的分担数据存储与读取操作过程的磁盘IO竞争。即采用多块小容量的磁盘在性能上要优于仅采用一块大容量的磁盘。
如果条件允许,尽量使数据存储服务与操作系统分别运行在物理分开的磁盘上。
采用DMS(Database Management Space)管理方式的表空间。
在物理不同的磁盘上创建多个表空间。然后可以将数据和索引分别存放在不同的表空间,这样可以显著的提高性能。还可以把一个使用频繁的大表纵向拆成多个小表,分别存放在不同的表空间中,然后用一个视图进行联合。
DB2服务器可以管理裸设备,即除系统以及DB2服务运行磁盘以外,为DB2数据存放单独准备磁盘,可以是多块,分区后不需要格式化,创建裸设备后直接交给DB2进行管理,用于存储数据。
系统的临时表空间对数据库性能影响很大,当由管理的物理内存不能满足数据库操作的需要时,DB2便会把临时数据写到磁盘上,这时便用到了系统临时表空间,并且这种情况会经常发生。
尽量在磁盘靠近最内层磁道的位置安放数据,因为此处磁盘的访问速度较快。

与性能相关的主要参数

DB2的参数配置分为两个级别,一个是实例级别,另一个是数据库级别。对数据服务性能影响较大的参数主要在数据库级别配置。以下是三个比较重要的内存配置参数:

bufferpagelocklistsortheap
bufferpage: 由同一个数据库中的所有对象共享。
sortheap: 用于排序的内存交换区,非共享,不宜设置太大,否则,很容易引起内存耗尽,因为每一个事务都会申请独立的内存用于排序。
locklist: 共享内存,用于记录数据服务运行中建立的锁。建议设置20Mb左右,需要时根据实际情况进行调整。DB2默认使用行级锁,如果设置太小,当锁的记录太多时,则会导致内存不足,此时DB2会把多个行锁升级为一个表锁,这样就会大大降低应用程序的并发性能。如果设置太大,则多分配的内存很少会被用到,导致浪费。

其他的一些配置参数:

numdb: 同时可以启动的实例数目

DB2的常用命令

db2ilist 列出当前系统中定义的DB2实例daslist 列出系统中的DASdb2 list database directory 列出当前实例中定义的数据库db2 list tablespaces 列出当前数据库中定义的表空间db2 list tabses [for all] 列出当前数据库中的表db2 list active db 列出活动的数据库
db2 get dbm configget db cfg for databasenamedb2 update db cfg for databasename using bufferpage 600Mdb2 alter bufferpool IABMDEFAULTBP size =1db2 list applications show detail

以上命令可以在后面加 " show detail" 参数,显示详细信息。

DB2数据存储的页大小只能在表空间级别统一指定(区别于Oracle,可以定义在表级别), 并且建好后不能修改。

可以手工建立一个页大小为4K的DMS用户临时表空间,然后把系统默认的SMS系统临时表空间删除。为满足应用需求,一般还应再建立一个页大小在8K以上的用户临时表空间。

DB2 UDB V8.1 对RedHat Linux 9 的支持不好,默认情况下无法启动GUI安装程序(可以通过设置环境LD_ASSUME_KERNEL=2.2.5解决),并且不会安装Sample数据库,控制中心也无法正常启动。

DB2 SQL 相关

当使用COUNT()函数时,如果表中的记录数 > 2 147 483 647行,则函数可能返回错误的结果,这时可以使用返回类型为DECIMAL(31, 0)的COUNT_BIG()函数。

DISTINCT 关键字可以用在COUNT()函数中,如:

SELECT COUNT(DISTINCT id) FROM TABLE

这代表将不对id列的重复值进行计数。

ORDER BY子句后面如果写了多个列名,需要分别指定升序或是降序。

可以在load大量数据时,暂时关闭表的日志选项。使用:

ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY

DB2的几个特殊寄存器:

CURRENT DATECURRENT TIMECURRENT TIMESTAMPUSER(用户ID)

有关日期的操作:

CURRENT TIMESTAMP + 2 DAYS(or HOURS, SECONDS, MONTHS, YEARS, etc.)

case 语句的使用:

case when 条件一 then 动作一 else 动作二 end; 

以上可以欠套使用。

在视图的创建语句中无法使用order by 子句与 fetch n rows 子句。但对于order by可以用如下方法替代实现,不过会影响效率。

create view v_name1(c1, c2, c3) asselect * from (select column1, column2, column3from t1order by column1 ) as t1;

参考资源

http://www-128.ibm.com/developerworks/cn/db2/

http://publib.boulder.ibm.com/infocenter/db2help/index.jsp

http://dbforums.com/

《DB2 UDB v8.1 for Linux, UNIX, Windows 数据库管理》George Baklarz, Bill Wong 合著,机械工业出版社出版

《DB2数据库管理与应用教程》庄济诚 著,清华大学出版社出版

 

相关文章 [04-12-21] [04-08-05] [04-08-05] [04-08-05] [04-07-14]

« | | »

Comments

Post a comment

Name:

Email Address:

URL:
Remember Me? YesNo

Comments:

DB2 UDB V8.1 管理 学习笔记(二)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7104/viewspace-133898/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7104/viewspace-133898/

DB2 UDB V8.1 管理 学习笔记相关推荐

  1. 调优 DB2 UDB v8.1 及其数据库的最佳实践-IBM developerWorks

    http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0404mcarthur/#sqltuning 级别: 初级 ...

  2. [NOTE] WebGoat v8.2.2学习笔记

    [NOTE] WebGoat v8.2.2学习笔记 文章目录 [NOTE] WebGoat v8.2.2学习笔记 前言 CIA 常见编码形式 OpenSSL使用 docker安全 SQL安全 SQLi ...

  3. Windows内存管理学习笔记(三)—— 无处不在的缺页异常

    Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...

  4. Windows内存管理学习笔记(二)—— 物理内存的管理

    Windows内存管理学习笔记(二)-- 物理内存的管理 物理内存 实验一:理解MmNumberOfPhysicalPages MmPfnDatabase _MMPFN 物理页状态 六个链表 实验二: ...

  5. Windows内存管理学习笔记(一)—— 线性地址的管理

    Windows内存管理学习笔记(一)-- 线性地址的管理 用户空间线性地址的管理 实验一:理解用户空间线性地址管理 Private Memory 实验二:理解Private Memory 堆 实验三: ...

  6. sqlserver 2012实施与管理学习笔记(一):选型和部署之单机部署、故障转移群集与日志传送

    sqlserver 2012实施与管理学习笔记(一):选型和部署之单机部署.故障转移群集与日志传送 数据库的选型和部署 sqlserver的安装和升级 选择高可用性和灾难恢复技术 故障转移群集 日志传 ...

  7. 郝健: Linux内存管理学习笔记-第5节课

    前序文章: 郝健: Linux内存管理学习笔记-第1节课 郝健: Linux内存管理学习笔记-第2节课 郝健: Linux内存管理学习笔记-第3节课 郝健: Linux内存管理学习笔记-第4节课 摘要 ...

  8. 郝健: Linux内存管理学习笔记-第6节课

    前序文章: 郝健: Linux内存管理学习笔记-第1节课 郝健: Linux内存管理学习笔记-第2节课 郝健: Linux内存管理学习笔记-第3节课 郝健: Linux内存管理学习笔记-第4节课 郝健 ...

  9. 郝健: Linux内存管理学习笔记-第4节课

    前序文章: 郝健: Linux内存管理学习笔记-第1节课 郝健: Linux内存管理学习笔记-第2节课 郝健: Linux内存管理学习笔记-第3节课 摘要 page cache free命令的详细解释 ...

最新文章

  1. 解决overfitting的方法
  2. 无线AP与无线交换机的区别
  3. 压缩与反压缩之 COMPRESS 与 EXPAND
  4. html 屏蔽蓝色电话,html – 在Chrome扩展程序中停用文字字段蓝色突出显示?
  5. VirtualBox使用技巧:关于undo差分盘与端口映射
  6. rbac 权限分配, 基于formset实现,批量增加
  7. strutr2运行流程
  8. java的map集合_Java集合之Map
  9. 项目部署到服务器后字符编码,将UTF-8编码的数据发布到服务器会丢失某些字符...
  10. SQLite 时间格式化
  11. java反射机制面试_java面试中面试官让你讲讲反射,应该从何讲起?
  12. 百度文库f12免费复制文章
  13. 内存屏障 Memery Barrier
  14. android device ID获取
  15. btrfs + snapper快照使用
  16. jmeter结果树为空_Jmeter查看结果树之查看响应的13种方法[详解]
  17. android客户端功能,推荐一个功能齐全的【玩Android客户端】
  18. D-HARRY2020春夏新品
  19. 正大国际期货:若想期货交易持续盈利务必牢记333仓位控制法
  20. 为什么特斯拉Q2业绩能超预期?

热门文章

  1. bugFree环境搭建 及 bugFree环境搭建常见问题
  2. 射频放大器芯片市场现状及未来发展趋势
  3. 如何处理Vegas素材中的杂音
  4. JavaWeb项目使用BlazeDS整合Flex进行RemoteObject数据交互
  5. 如何区分漫威军团与灭霸军团--支持向量机(小白篇)
  6. 上海物联网共享实验室揭牌
  7. 移动机器人传感器外参标定综述
  8. HTML5 CSS动画 animation使用
  9. 计算机技术 食堂管理,一套出色的智慧食堂消费系统,应该具备哪些突出特点?...
  10. 多彩贵州基于Python的旅游分析