DB2性能问题分类与分析思路

DML 性能问题

  DML(Data Manipulation Language) 包括了查询,增加,删除和更新纪录等操作。

  首先看一下查询的性能问题,在查询一张表或多张表的联合查询时有时反应时间会比较长,这使得用户难以忍受。针对这种问题,可以通过下述方法来分析:

  在查询的连接或条件子句中的相关字段是否加了索引。 ( 关于 SQL 的优化可以参见 SQL 优化相关文章,本文不再赘述 ) 。

  察看缓冲池的大小,缓冲池太小会造成很多数据不能读到缓冲池而直接从硬盘上读取,造成很大的瓶颈。另一方面关于缓冲池预取的设置,一般能将预取大小 (PREFETCHSIZE) 设定为区段大小与容器个数的积,这样可以最大利用到预取的并行性。

  在查询中涉及到 order by 字句时,如果排序的字段没有设置索引那么排序将会用到内存中的排序堆 (sortheap) 。如果排序堆过小会造成排序溢出到硬盘上 (Overflowed) 造成性能衰退。

  同时还要考虑到 RUNSTATS/REORG 因素。 RUNSTATS 命令可以更新表中的统计信息。当表中的数据经过频繁的增删改后其相应的统计信息会发生变化,而优化器选择执行计划的时候是根据这种统计信息来计算的,所以 运行 RUNSTATS 此时显得尤为重要。 REORG 可以整理数据存储的物理结构,也能减少数据扫描的时间,提高查询的性能。

  从存储方面应当注意的是选取裸设备的 DMS 要比 SMS 性能要好,因为它少了一层文件系统的缓冲而直接访问缓冲池。

  学会使用 optimize for n rows 子句,它可以提高前面 n 条记录的显示速度。这样可以使用户能够先快速查看这 n 条记录,然后再看其他纪录。减少了用户的等待时间。

  物化查询表 (MQT) 也是提高查询性能的一种手段,它可以将经常用到的查询结果集存储到一张中间表中,在查询时减少了数据检索的时间。

  在架构上采用 MPP 或 SMP 也是提高查询或写操作性能的手段。

  针对复杂查询时可以将数据库配置参数 DFT_QUERYOPT( 缺省查询优化类 ) 的值设得高一些(7 或 9),针对简单查询可以将它设得低一些 (3 或 5),因为设置越高优化器所作的分析就越深入,耗费在生成计划上的时间就越多。

  针对 C/S 结构的查询可以将查询语句写在服务器端生成存储过程来减少数据的网络传输以及客户端的压力。而经过编译的存储过程执行得更加高效。

  还要考虑到隔离级别与锁的因素,隔离级别越高越能保证数据的完整性,但同时会减弱并发性。这一点需要权衡需求而定。

  网络因素也不可忽视,将数据库服务器参数 RQRIOBLK 设为 65534 可以相应地提高网络吞吐量。(缺省值 32767)

  最后需要考虑的是数据库的结构,在某些情况下,在某些表中增加一些冗余字段虽然牺牲了一些空间和维护成本,但是在查询时可以减少很多连接操作,这样可以大大提高查询性能。就是用空间换取时间。

  接下来看一下增删改的性能优化方法:

  首先是索引因素,在做增删改时数据库会对表中的索引做相应的修改。这会消耗一定的资源,所以在保证数据完整性的前提下可以先将索引删除,待到增删改结束后再重建这些索引。这也会节省一些时间。将索引和数据放在不同的硬盘上也可以增加写操作的并行性。

  其次要考虑日志因素,在数据写操作的同时,数据库系统也在维护着事务日志,所以应尽量减少日志维护 的代价。将 auto commit 设为 false,可以减少提交的次数(同时也减少了写日志的次数)。增大 LOGBUFSZ,LOGFILSZ 可以减少刷新日志的次数以及日志文件切换的次数。或者将表的属性改为” ACTIVATE NOT LOGGED INITIALLY ” , 这样可以屏蔽表的日志操作,以提高写操作的性能,但是失去事务日志的表的数据很难修复,这一点需要权衡。

  将日志和数据分别放在不同的硬盘上也可以增加写操作的并行性。

  在插入记录时采用 APPEND MODE 可以消除 DB2 寻找表中间的空余空间的时间而直接插到表尾,从而提高插入的性能。

  关于并行性的因素,采用 MPP 模式可以使用并行处理的方式增加写操作的性能。将容器分散在不同的硬盘上也可以增加写操作的性能。

  还要考虑到约束和触发器的影响,在写操作时应当尽量避免表中有约束和触发器。在保证数据完整性的前提下可在频繁大批量写操作时先将约束或触发器去除,完毕后重建。

  和查询一样,写操作同样要考虑到隔离级别和锁的因素(参见查询优化部分)。

  在 insert 语句中包括多行可以减少客户机 - 服务器通信次数,提高插入性能。如:insert into table1 values (1, ’ a ’ ),(2, ’ b ’ ),(3, ’ c ’ ) 。

  还有一个需要考虑的因素是 DB2 V95 在 UNIX 上的采用线程模型,在操作系统中的开销变小,使得写操作性能要比之前的 DB2 的版本要好。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-11 07:11:21

DB2性能问题分类与分析思路的相关文章

Swift 性能探索和优化分析

Swift 性能探索和优化分析 本文首发在 CSDN<程序员>杂志,订阅地址 http://dingyue.programmer.com.cn/. Apple 在推出 Swift 时就将其冠以先进,安全和高效的新一代编程语言之名.前两点在 Swift 的语法和语言特性中已经表现得淋漓尽致:像是尾随闭包,枚举关联值,可选值和强制的类型安全等都是 Swift 显而易见的优点.但是对于高效一点,就没有那么明显了.在 2014 年 WWDC 大会上 Apple 宣称 Swift 具有超越 Object

《DB2性能管理与实战》——4.1 DB2性能相关参数

4.1 DB2性能相关参数 DB2性能管理与实战 本节讲述在DB2中应当注意的一些与性能相关的配置参数,包括注册表参数.数据库管理器参数和数据库参数.和内存相关的参数请参见第2章,这里不再赘述. 4.1.1 注册表参数 1.DB2_OVERRIDE_BPF 这个变量以页为单位指定在激活数据库.前滚恢复或崩溃恢复时要创建的缓冲池大小.当内存约束导致在激活数据库.前滚恢复或崩溃恢复期间出现故障时,此选项很有用.出现内存不足可能是因为实内存短缺(这种情况很少发生):或者因为数据库管理器试图在没有精确配

老站诊断分析思路

摘要: 最近有朋友咨询笔者,说手中一个4年老站,优化了三个月其效果都不明显.笔者以前也有成功或失败优化老站的案例,很好奇的分析了该站.以下是笔者的一些诊断分析思路. 一.基 最近有朋友咨询笔者,说手中一个4年老站,优化了三个月其效果都不明显.笔者以前也有成功或失败优化老站的案例,很好奇的分析了该站.以下是笔者的一些诊断分析思路. 一.基本的seo数据分析 网站的基本seo数据无非是网站结构.收录与外链三方面.若细分,还可以分为文章质量.外链质量.服务器空间.友链.域龄.跳出率与停留时间.如下是该

【MyBatis框架】订单商品数据模型-分析思路

我们接下来要对即将用来实验的订单商品数据模型进行分析. 首先在MySql中创建mybatis数据库,在其中创建以下表: CREATE TABLE `items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL COMMENT '商品名称', `price` float(10,1) NOT NULL COMMENT '商品定价', `detail` text COMMENT '商品描述', `pic` varc

test- 以下程序运行后的打印结果是______(需要写上分析思路)

问题描述 以下程序运行后的打印结果是______(需要写上分析思路) #include int sum(int a, int b) { return a + b; } int two(int n) { return n * 2; } void test(int n) { printf("%dn", two(n)); } int main() { test( sum(10, 11) ); return 0; } 解决方案 sum(10, 11) 得到21 test输出 two(21),2

《DB2性能管理与实战》——第4章 DB2性能监控相关命令及参数

第4章 DB2性能监控相关命令及参数 DB2性能管理与实战本章讲述DB2自带的性能监控的传统工具.命令以及性能优化的一些相关参数,在后面的章节中将介绍最新的DB2的图形化监控和优化工具,使读者能够对不同工具的使用风格有一个全面的了解. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

从域名分类上去分析域名的好坏

很多网站站长都很关心域名的好坏,一个听起来比较顺的域名,往往都是价值不菲.问题是花费那么多的金钱去购买一个域名值得吗?什么样的域名才是好的域名呢? 第一.从域名分类上去分析域名的好坏: 顶峰网认真的分析了各大网站的域名,在国内大体可以分为如下几类, 1,汉语首拼:万能导航网(wndhw.com) 2.汉语全拼:百度(baidu.com) 3.汉语全拼+英文:顶峰网(dingfengnet.com);新华网(xinhuanet.com) 4.英文+中文全拼:欧克健康网(okjiankang.com

销售型网站如何分析 销售型网站分析思路

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对网站进行分析是我们作为一个网站优化人员必备的能力. 那么如何对一个销售型网站进行网站分析?销售型网站分析要分析那些内容?下面我就结合多年的昆山网站优化经验来总结一下销售型网站到底该如何进行网站分析.首先销售型网站分析主要分为:网站现状分析和竞争对手分析. 我们首先来看网站现状分析.网站现状分析的话主要就是针对销售数据分析,流量来源分析和网站

转变分析思路应对当前市场

广州万隆 核心提示:相比传统基本面分析,预期分析的指导性更强,但其对分析者的动态思维要求更高.尤其是目前进入到全流通时代,各方在利益驱使下的行为模式更加复杂,而要适应目前的市场环境,转变分析思路并更好运用预期分析的手法就更重要. 一.预期分析指导性更强 正如本栏目多次强调的那样,预期分析的好处是可以直接分析市场各方对基本面各要素的预期和反应,从而直接得出市场供求关系的变化和市场主流偏好的发展方向. 相比基本面而言,这一分析方法的优点在于效果直接,并能够更贴近于市场现状和特征.但缺点在于不确定性更