数据库性能优化主要方法
2024-04-06
来源:步旅网
信息 翳囊 科学 数据库性能优化主要方法 吴春庆 (同济大学软件学院上海210000) [摘要]以DB2 uDB数据库管理系统为例,分析影响数据库性能的各方面因素,以及数据慝优化应遵循的方法,并就数据库优化技术方法进行探讨。 [关键词]数据库性能优化DB2 中图分类号:TP3文献标识码:A文章编号 1671--7597(2010)0210053--01 DB2'性能优化是一件较为复杂的综合性的工作,需要对问题的根源作 单个等式作为条件。但是在有索引扫描的情况下嵌套循环连接效率则更 全方位的探索和思考。同时也需要较深厚的数据库管理经验与优化知识。 高。当优化级别等于零时,连接只能采用嵌套循环连接,当优化级别大于 随着:DB2数据库中的数据量的不断增长或者用户数的激增,数据库系统的性 等于1时,连接可以采用合并连接。当优化级别大于5时连接可以采用散列 能会显著下降,而此时快速定位性能上的瓶颈则至关重要。DB2的性能优化 表连接。 可以从三个方面分析:内存,CPU和I/O。 3I,0因素 1内存因素 关于UO因素要考虑以下几个方面:首先是磁盘的I/O,为了能够最大 在内存方面,主要是考虑缓冲池(BUFFERPOOL)的使用。缓冲池是 化磁盘的I/0i可以把数据,索引以及日志分别放在不同的硬盘上。因为在一 一片用来缓冲从磁盘上读取的数据和索引的内存区域,这些数据和索引 个事务中数据和索引可能需要同时访问,而在事务提交时,数据和日志要 信息在缓冲池中进行运算后最终还要写回磁盘。缓冲池的页面大小有四 同时写入磁盘,而且有可能索引也要同步维护,所以将它们放在不同的硬 种(4K,8K,16K,32K),分别对应四种不同页面大小的表空间。缓冲 盘上可以使它们的读写并行运行,从而不致使磁盘成为瓶颈。同时选择数 池的大小决定了能够从磁盘上缓冲数据的容量大小。当然缓冲池也不是 据库管理表空间(DMS)要比系统管理表空间(SMS)性能要好,因为读写 越大越好,缓冲池过大可能会导致连接数据库的时间过长,因为在连接 SMS需要经过操作系统的cache再到缓冲池,而可以采用裸设备的DMS则不需 数据库时要为数据库的缓冲池分配内存空间。可以通过计算缓冲池的命 要。但是DMS相对SMS来说维护起来较麻烦。 中率来评估缓冲池的使用效率:缓冲池命中率:(1一((数据物理读+索 其次要考虑的是日志文件的大小,当数据库在写事务日志时当一个日 引物理读)/(数据逻辑读+索引逻辑读)))*100%,缓冲池命中率越大 志文件写满后会转向另外一个日志文件,这种日志文件的切换会造成操作 说明缓冲池的使用效率高。缓冲池命中率太小说明缓冲池太小应当调 系统上的开销。所以应当尽量将日志文件大小(LOGFILSIZ)设得大一些, 大。其中的数据物理读,索引物理读以及数据逻辑读和索引逻辑读都可 这样可以减少日志文件切换的次数。但是日志文件过大难免会造成一些空 以从缓冲池的快照中获取。 间的浪费。 在内存方面要考虑的另外几个重要因素是排序堆(sORTHEAP),锁列 同时也要考虑到隔离级别的因素,在iDB2中隔离级别分成4级:可重复 表(LOCKLIST),日志缓冲区(LOGBUFSZ)。排序堆在查询结果带有排序 的读,读稳定性,游标稳定性和未提交的读。这四种级别逐个降低。越高 选项而没有相关索引对应时将会被使用,排序堆太小会产生排序溢出,那 的隔离级别越能保证数据完整性,但却会降低并发性,所以应当综合权衡 些在排序堆中装不下的排序数据将会溢出到一个临时表中,这会使性能下 后做出决定。 降。与SORTHEAP参数相关的是SHEAPTHRES SHR和sHEAPTHREs,SHEAP'THRES 4小结 SHR限制了一个数据库中共享排序的最大内存,SHEAPTHRES限制了私有排序 数据库的优化是一个系统工程,在数据库实施过程当中影响性能优良 的最大内存。LOCKLIST ̄指的是一个数据库中用来存放锁的内存空间,当这 的因素很多,而不同项目的应用要求又各不相同,所以要找出所有完全通 个参数设得过小会导致在锁用光这部分资源后导致锁升级(即多个行锁转 用的优化技术是不现实的,在数据库开发和维护的过程中,必须针对数据 化为一个表锁来释放出更多的资源)。这会导致系统的并行性下降,很多 库运行的具体隋况加以分析和调整。 应用连接出现挂起,使得系统的性能衰退,所以尽可能调大LOCKLIST ̄参 数。 2CPU因素 关于CPU因素首先是考虑DB2优化器对访问计划的分析与优化。一般来 参考文献: 说,一条sQL在执行时首先会被解析,然后进行语义分析,进而重写SQL, [1]IBM开发网站:http://wWW.ibm.CO[ Ideve1operworks/cn/data/zones/ 优化器会对重写过的sQL进行基于成本的分析最终选择最有效的访问计划。 performance/#N10093. 最终生成可执行代码(执行计划)来执行这条语句。 [2](美)Craig S.Mullins著,段小璐等译,DB2开发人员指南,机械工 在DB2里的优化级别分为九级,缺省是第五级,级别越高优化器分析 业出版社,2002.2. 得程度越深。这个级别有数据库配置参数IDFT_QUERYOPT决定。并不是级别 [3]DB2 9 for Z/OS Application Performance and Tuning Student 设得越高性能越好,因为对于一些较为简单的SQL语句,如果优化级别过高 Notebook. 那么花在优化SQL上的时间就会过长,而执行时间相对来说很短,有些得不 [4]牛新庄,DB2数据库性能调整和优化,清华大学出版社,2009,.5. 偿失。在选择访问计划时,索引扫描的效率往往会比表扫描要高,所以索 [5]牛新庄,循序渐进:DB2--DBA.系统管理,运维与应用案例,清华大学出 版社,2009.6. 引的优化也是值得注意的。正确的建立索引会使查询性能大幅度的提高。 在DB2中连接分为三种:嵌套循环连接(nest—loop join),合并连 接(merge—join),散列表连接(hash-一join)。一般来说效率最低的是嵌 套循环连接。而合并连接和散列表连接只进行一次循环遍历,相对来说效 作者简介: 率较高。其中散列表连接可以采用多个等式做为条件而合并连接只能采用 吴春庆,男,硕士研究生,研究方向:数据库技术,数据库优化。