DB2培训讲义-DB2性能优化入门.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《DB2培训讲义-DB2性能优化入门.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 培训 讲义 _DB2 性能 优化 入门
- 资源描述:
-
1、DB2培训讲义性能优化入门第1页,共31页。有关的概念第2页,共31页。DB2 性能优化的三个方面n 内存n CPUn I/O第3页,共31页。内存因素n 在内存方面,主要是考虑缓冲池(BUFFERPOOL)的使用。缓冲池是一片用来缓冲从磁盘上读取的数据和索引的内存区域,这些数据和索引信息在缓冲池中进行运算后最终还要写回磁盘。缓冲池的页面大小有四种(4K,8K,16K,32K),分别对应四种不同页面大小的表空间。缓冲池的大小决定了能够从磁盘上缓冲数据的容量大小。当然缓冲池也不是越大越好,缓冲池过大可能会导致连接数据库的时间过长,因为在连接数据库时要为数据库的缓冲池分配内存空间。可以通过计算缓冲
2、池的命中率来评估缓冲池的使用效率:缓冲池命中率=(1-(数据物理读+索引物理读)/(数据逻辑读+索引逻辑读)*100%,缓冲池命中率越大说明缓冲池的使用效率高。缓冲池命中率太小说明缓冲池太小应当调大。其中的数据物理读,索引物理读以及数据逻辑读和索引逻辑读都可以从缓冲池的快照中获取。第4页,共31页。内存因素n 在内存方面要考虑的另外几个重要因素是排序堆(SORTHEAP),锁列表(LOCKLIST),日志缓冲区(LOGBUFSZ)。排序堆在查询结果带有排序选项而没有相关索引对应时将会被使用,排序堆太小会产生排序溢出(Overflowed),那些在排序堆中装不下的排序数据将会溢出到一个临时表中,
3、这会使性能下降。与 SORTHEAP 参数相关的是 SHEAPTHRES_SHR 和 SHEAPTHRES,SHEAPTHRES_SHR 限制了一个数据库中共享排序的最大内存,SHEAPTHRES 限制了私有排序的最大内存。LOCKLIST 指的是一个数据库中用来存放锁的内存空间,当这个参数设得过小会导致在锁用光这部分资源后导致锁升级(即多个行锁转化为一个表锁来释放出更多的资源)。这会导致系统的并行性下降,很多应用连接出现挂起,使得系统的性能衰退。第5页,共31页。内存因素n 所以尽可能调大 LOCKLIST 参数,这里需要指出:LOCKLIST 指的并不是锁的个数,而是以数据库页为单位的一片
4、内存区域(在 32 位系统中每个锁需要 96 个字节,在 64 位系统中每个锁需要 128 个字节)。与 LOCKLIST 参数对应的是 MAXLOCKS 参数,MAXLOCKS 定义的是一个百分数,它指定了一个应用程序所能占用的最大的锁空间占 LOCKLIST 的比例。日志缓冲区(LOGBUFSZ)指的是日志在写到磁盘以前用于缓冲的一片内存空间,这样可以减少写日志带来的过多的 I/O。第6页,共31页。内存因素n 从版本 9 以后 DB2 推出了一个新特性自调节内存管理器(STMM:Self Tuning Memory Manager),这个特性使得很多内存参数如前面所述的 SORTHEAP
5、,LOCKLIST,LOGBUFSZ 等进行自动调节,当数据库参数 SELF_TUNING_MEM 设为 ON,这些参数设为 AUTOMATIC 即可以进行自动调整。这样可以节省很多人工调整的时间。第7页,共31页。CPU 因素n 关于 CPU 因素首先是考虑 DB2 优化器(OPTIMIZER)对访问计划(ACCESS PLAN)的分析与优化。一般来说,一条 SQL 在执行时首先会被解析,然后进行语义分析,进而重写 SQL,优化器会对重写过的 SQL 进行基于成本的分析最终选择最有效的访问计划。最终生成可执行代码(执行计划)来执行这条语句。查询访问计划的工具有很多,既有图形化工具 Visua
6、l Explain,也有命令 db2exfmt 来格式化解释表(Explain tables)中的数据生成 ACCESS PLAN。还有命令 db2expln 查询 ACCESS PLAN。第8页,共31页。CPU 因素n 在 DB2 里的优化级别分为九级,缺省是第五级,级别越高优化器分析得程度越深。这个级别有数据库配置参数 DFT_QUERYOPT 决定。并不是级别设得越高性能越好,因为对于一些较为简单的 SQL 语句,如果优化级别过高那么花在优化 SQL 上的时间就会过长,而执行时间相对来说很短,有些得不偿失。在选择访问计划时,索引扫描的效率往往会比表扫描要高,所以索引的优化也是值得注意的
7、。正确的建立索引会使查询性能大幅度的提高。第9页,共31页。CPU 因素n 在 DB2 中连接(JOIN)分为三种:嵌套循环连接(nest-loop join),合并连接(merge-join),散列表连接(hash-join)。一般来说效率最低的是嵌套循环连接,这种连接采用的是笛卡儿集,进行多次循环遍历得到结果。而合并连接和散列表连接只进行一次循环遍历,相对来说效率较高。其中散列表连接可以采用多个等式做为条件而合并连接只能采用单个等式作为条件。但是在有索引扫描的情况下嵌套循环连接效率则更高。当优化级别等于零时,连接只能采用嵌套循环连接,当优化级别大于等于 1 时,连接可以采用合并连接。当优化
8、级别大于 5 时连接可以采用散列表连接。散列表连接要求 SORTHEAP 比较大,因为要为生成散列表准备空间。第10页,共31页。CPU 因素n 在考虑 CPU 因素时还要考虑 CPUSPEED 这个参数,这个参数标明了 CPU 的运行速度,它会帮助优化器评估最好的访问计划。一般来说这个参数设为-1,优化器将自动计算 CPU 的速度。另外运用多分区的特性可以把一个数据库分布到多台机器上,这样可以充分利用多台机器的 CPU 的资源对应用程序的事务进行并行处理,从而提高数据库的性能。第11页,共31页。I/O 因素n 关于 I/O 因素要考虑以下几个方面:首先是磁盘的 I/O,为了能够最大化磁盘的
9、 I/O 可以把数据,索引以及日志分别放在不同的硬盘上。因为在一个事务中数据和索引可能需要同时访问,而在事务提交时,数据和日志要同时写入磁盘,而且有可能索引也要同步维护,所以将它们放在不同的硬盘上可以使它们的读写并行运行,从而不致使磁盘成为瓶颈。同时选择数据库管理表空间(DMS)要比系统管理表空间(SMS)性能要好,因为读写 SMS 需要经过操作系统的 cache 再到缓冲池,而可以采用裸设备的 DMS 则不需要。但是 DMS 相对 SMS 来说维护起来较麻烦。第12页,共31页。I/O 因素n 其次要考虑的是日志文件的大小,当数据库在写事务日志时当一个日志文件写满后会转向另外一个日志文件,这
10、种日志文件的切换会造成操作系统上的开销。所以应当尽量将日志文件大小(LOGFILSIZ)设得大一些,这样可以减少日志文件切换的次数。但是日志文件过大难免会造成一些空间的浪费。第13页,共31页。I/O 因素n 同时也要考虑到隔离级别的因素,在 DB2 中隔离级别分成 4 级:可重复的读,读稳定性,游标稳定性和未提交的读。这四种级别逐个降低。越高的隔离级别越能保证数据完整性,但却会降低并发性,所以应当综合权衡后做出决定。隔离级别可以通过如下命令来改变:n CHANGE ISOLATION TO=CS|RR|RS|URn 在连接方面还要考虑到代理和连接的关系,这也会影响到数据库的并发性。n 最后要
展开阅读全文