没有合适的资源?快使用搜索试试~ 我知道了~
DB2 性能优化快速入门
4星 · 超过85%的资源 需积分: 7 28 下载量 37 浏览量
2010-03-17
09:17:12
上传
评论
收藏 164KB DOC 举报
温馨提示
试读
12页
本文是针对 DB2® Universal Database(DB2 UDB)的初学者在遇到 DB2 的性能问题的时候不知道从何分析,从何入手的这一问题,从 DB2 的体系结构介绍开始,由浅入深的讲述了 DB2 性能优化的一些基础知识,简单地介绍调优的原理和工具。同时针对性能上的一些典型问题,如 DML 性能问题 ( 查询和插入操作 ), DDL 性能问题(建表,建索引),并发性问题等等,介绍一种渐进的分析方法,同时结合一些具体的优化案例进行分析以及成型的 DB2 调优工具 (DB2 Performance Expert) 的介绍,使得初学者能够在很短的时间内掌握 DB2 性能优化的基本技巧,并且能够在数据库早期设计时考虑到一些性能因素而防范于未然。
资源推荐
资源详情
资源评论
本文是针对 ()的初学者在遇到 的性能问题的时候不知道
从何分析,从何入手的这一问题,从 的体系结构介绍开始,由浅入深的讲述了 性能优化的一
些基础知识,简单地介绍调优的原理和工具。同时针对性能上的一些典型问题,如 性能问题 查询
和插入操作 , 性能问题(建表,建索引),并发性问题等等,介绍一种渐进的分析方法,同时结
合一些具体的优化案例进行分析以及成型的 调优工具 的介绍,使得
初学者能够在很短的时间内掌握 性能优化的基本技巧,并且能够在数据库早期设计时考虑到一些性
能因素而防范于未然。
DB2 性能优化概述
性能优化是一件较为复杂的综合性的工作 需要对问题的根源作全方位的探索和思考。同时也需要
较深厚的数据库管理经验与优化知识。这对于初学者来说可能有些勉为其难。但是在很多情况下,随着
数据库中的数据量的不断增长或者用户数的激增,数据库系统的性
能会显著下降,而此时快速定位性能上的瓶颈则至关重要。下面简要地介绍一下 的调优的一些因素
和工具,以及一些原理,使初学者对性能优化能够有一个大致的了解。
的性能优化可以从三个方面分析:内存,和 !。
内存因素
在内存方面,主要是考虑缓冲池 ""#!!的使用。缓冲池是一片用来缓冲从磁盘上读取的数据和
索引的内存区域,这些数据和索引信息在缓冲池中进行运算后最终还要写回磁盘。缓冲池的页面大小有四
种 $%&%'(%)%,分别对应四种不同页面大小的表空间。缓冲池的大小决定了能够从磁盘上缓冲数
据的容量大小。当然缓冲池也不是越大越好,缓冲池过大可能会导致连接数据库的时间过长,因为在连接
数据库时要为数据库的缓冲池分配内存空间。可以通过计算缓冲池的命中率来评估缓冲池的使用效率:缓
冲池命中率 *'+数据物理读 ,索引物理读 数据逻辑读 ,索引逻辑读 -'../,缓冲池命中率
越大说明缓冲池的使用效率高。缓冲池命中率太小说明缓冲池太小应当调大。其中的数据物理读,索引物
理读以及数据逻辑读和索引逻辑读都可以从缓冲池的快照中获取。
在内存方面要考虑的另外几个重要因素是排序堆 0!#123,锁列表 !%01日志缓冲区
!4"05。排序堆在查询结果带有排序选项而没有相关索引对应时将会被使用,排序堆太小会产生
排序溢出 !678那些在排序堆中装不下的排序数据将会溢出到一个临时表中,这会使性能下降。
与 0!#123参数相关的是 02312#0902#和 02312#0,02312#0902#限制了一
个数据库中共享排序的最大内存,02312#0限制了私有排序的最大内存。 !%01指的是一个
数据库中用来存放锁的内存空间,当这个参数设得过小会导致在锁用光这部分资源后导致锁升级(即多个
行锁转化为一个表锁来释放出更多的资源)。这会导致系统的并行性下降,很多应用连接出现挂起,使得
系统的性能衰退。所以尽可能调大 !%01参数,这里需要指出 !%01指的并不是锁的个数,而
是以数据库页为单位的一片内存区域(在 )位系统中每个锁需要 :(个字节,锁上加锁的话每个锁则需
$&个字节。在 ($位系统中每个锁需要 '&个字节,锁上加锁的话每个锁则需 ($个字节)。与
!%01参数对应的是 3;!%0参数,3;!%0定义的是一个百分数,它指定了一个应用程
序所能占用的最大的锁空间占 !%01的比例。日志缓冲区 !4"05指的是日志在写到磁盘以
前用于缓冲的一片内存空间,这样可以减少写日志带来的过多的 !。
从版本 :以后 推出了一个新特性自调节内存管理器 01<01=>?>这
个特性使得很多内存参数如前面所述的 0!#123,!%01,!4"05等进行自动调节,当数
据库参数 0"91@@49设为 !@这些参数设为 31!31即可以进行自动调整。这样可以
节省很多人工调整的时间。
CPU 因素
关于 因素首先是考虑 优化器 !15#对访问计划 3003@的分析与优化。一
般来说,一条 0A在执行时首先会被解析,然后进行语义分析,进而重写 0A优化器会对重写过的
0A进行基于成本的分析最终选择最有效的访问计划。最终生成可执行代码(执行计划)来执行这条语
句。查询访问计划的工具有很多,既有图形化工具 B=,也有命令 8来格式化解释
表 中的数据生成 3003@。还有命令 8查询 3003@。
在 里的优化级别分为九级,缺省是第五级,级别越高优化器分析得程度越深。这个级别有数据库配
置参数 "19A#C!1决定。并不是级别设得越高性能越好,因为对于一些较为简单的 0A语句,如
果优化级别过高那么花在优化 0A上的时间就会过长,而执行时间相对来说很短,有些得不偿失。在选
择访问计划时,索引扫描的效率往往会比表扫描要高,所以索引的优化也是值得注意的。正确的建立索引
会使查询性能大幅度的提高。
在 中连接 D!@分为三种:嵌套循环连接 +E合并连接 >+E散列表连接
FF+E。一般来说效率最低的是嵌套循环连接,这种连接采用的是笛卡儿集,进行多次循环遍历得
到结果。而合并连接和散列表连接只进行一次循环遍历,相对来说效率较高。其中散列表连接可以采用多
个等式做为条件而合并连接只能采用单个等式作为条件。但是在有索引扫描的情况下嵌套循环连接效率则
更高。当优化级别等于零时,连接只能采用嵌套循环连接, 当优化级别大于等于 '时,连接可以采用合
并连接。当优化级别大于 G时连接可以采用散列表连接。散列表连接要求 0!#123比较大,因为要
为生成散列表准备空间。
在考虑 因素时还要考虑 0这个参数,这个参数标明了 的运行速度,它会帮助优化
器评估最好的访问计划。一般来说这个参数设为 +',优化器将自动计算 的速度。另外运用多分区的
特性可以把一个数据库分布到多台机器上,这样可以充分利用多台机器的 的资源对应用程序的事务
进行并行处理,从而提高数据库的性能。
I/O 因素
关于 !因素要考虑以下几个方面:首先是磁盘的 !为了能够最大化磁盘的 !可以把数据,索引以
及日志分别放在不同的硬盘上。因为在一个事务中数据和索引可能需要同时访问,而在事务提交时,数据
和日志要同时写入磁盘,而且有可能索引也要同步维护,所以将它们放在不同的硬盘上可以使它们的读写
并行运行,从而不致使磁盘成为瓶颈。同时选择数据库管理表空间 0要比系统管理表空间 00
性能要好,因为读写 00需要经过操作系统的 F再到缓冲池,而可以采用裸设备的 0则不需
要。但是 0相对 00来说维护起来较麻烦。
其次要考虑的是日志文件的大小,当数据库在写事务日志时当一个日志文件写满后会转向另外一个日志文
件,这种日志文件的切换会造成操作系统上的开销。所以应当尽量将日志文件大小(!4"05)设得
大一些,这样可以减少日志文件切换的次数。但是日志文件过大难免会造成一些空间的浪费。
同时也要考虑到隔离级别的因素,在 中隔离级别分成 $级:可重复的读,读稳定性,游标稳定性和
未提交的读。这四种级别逐个降低。越高的隔离级别越能保证数据完整性,但却会降低并发性,所以应当
综合权衡后做出决定。隔离级别可以通过如下命令来改变:
23@40!31!@1!*0H##H#0H#
在连接方面还要考虑到代理和连接的关系,这也会影响到数据库的并发性,具体信息可以参考资源部分。
最后要考虑的还是关于多分区的特性。在多分区数据库中,一个请求首先传到协调分区,然后由协调分区
将请求细分成多个部分发送到其他分区,这样数据可以在各个分区进行并行读写,实现 !最大化。
性能优化相关工具
在 中有很多和性能优化相关的工具和命令,下面简单地介绍几种:
SNAPSHOT <这是 获取数据库信息快照的一种方法。它能够获取在数据库中关于缓冲池,
锁,排序以及 0A等等信息。 3可以通过获取这些信息来对数据库中的各组件进行评估来
分析问题的瓶颈。
DB2PD<这个命令是用来分析数据库的当前状态,它带有很多参数。可以用来分析应用程序,
代理,内存块,缓冲池,日志及锁状态等信息。
RUNSTATS<这个命令是用来收集数据库中数据的最新统计信息,并更新到系统表中。更新统
计信息将会促使优化器选择更加符合实际的高效的访问计划,从而提高工作效率。
REORG<这个命令用来重新整理数据库中数据和索引的碎片,使其在物理上可以得以按一定规
则排列,这样可以加快检索的速度。
DB2DART<这个命令是一个数据库的分析和报告工具,它用来检查表空间,索引以及数据库
结构的正确性,分析在性能问题上的一些原因。
DB2SUPPORT<这个命令用来收集 和操作系统的所有相关信息并生成一个压缩文件,
可传送给优化人员进行分析。
还有一些 中其他的文件可以用来分析性能问题,比如说诊断日志,追踪文件等。一些第三方的工具
也可供参考,如“ 8I, A01等等。
其他性能因素
XML 的优化: 在 B:以后引入了纯 ;的数据类型,这是一种层次型数据类型。这和传
统的关系型数据类型不一样,在 B:以前 存储 ;数据使用 !数据类型,应用程序
在存取 ;数据的时候必须先要解析 ;再使用其数据。而在纯 ;类型中,可以直接读
取其中的元素,这样性能会有较大的提高。另外针对纯 ;还有 ;的索引,也会增大存取
的性能。
操作系统: 数据库存在于操作系统之上,操作系统的性能将直接影响到数据库的运行效率,因
此优化操作系统也是优化数据库的一个重要过程。在操作系统级别上可以对内存进行优化,比如
说对系统共享内存,信号量以及虚拟内存的设置等等都可以影响到数据库的性能。同时在磁盘的
分布上也会影响到数据库 !效率。
网络: 网络将会影响到数据库的 !性能,当数据通过网络在客户端和服务器端进行传送时,
网络上出现瓶颈会导致数据库 !性能显著下降。所以选择优良的网络设备以及配置良好的网络
环境对数据库性能相当重要。同时也要考虑到防火墙的因素,有时防火墙会阻挡来自某些 的
数据包。
回页首
DB2 性能问题分类与分析思路
DML 性能问题
=>=>包括了查询,增加,删除和更新纪录等操作。首先看一下查询的
性能问题,在查询一张表或多张表的联合查询时有时反应时间会比较长,这使得用户难以忍受。针对这种
问题,可以通过下述方法来分析:
在查询的连接或条件子句中的相关字段是否加了索引。 关于 0A的优化可以参见 0A优化
相关文章,本文不再赘述 。
剩余11页未读,继续阅读
资源评论
- cdxc1232011-10-31非常感谢,正在找这方面资料,就是内容有点少
iguohao
- 粉丝: 200
- 资源: 269
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功