DB2数据库-性能测试监控
一.DB2数据库介绍
1. DB2架构介绍
? 概要介绍
DB2是IBM公司研发的关系数据库产品,目前广泛应用于金融、通信、交通等行业,在IBM随需应变的战略体系中扮演着重要角色。因为川农信属于金融行业,因此也在使用DB2,其版本为v9.7,所以在这里介绍一些9.7版本的新特性。
? 支持索引压缩、临时表数据压缩和xml压缩,更加降低了存储空间成本。 ? 支持内联大对象。 ? 在线表迁移功能。 ? 支持实时表字段更改。
? 在性能监控方面DB29.7有了极大增强,新的监控模型不仅可以快速找出问题瓶颈,而且对系统的影响非常小。特别是对锁的监控,通过新的Locking Event Monitor可同时监控死锁、锁等待和锁超时。
? 移植性增强。 ? HADR备机可读。
? 三种常用架构简介
当前的应用系统主要分为两类:联机事务处理(OLTP)和联机分析处理(OLAP)。OLTP主要执行日常的事务处理,比如银行存取款、商场购物等,它的主要特点是对响应时间要求高,数据量一般较小,并发多,面向应用。OLAP主要指数据仓库、决策分析类系统,主要特点是数据量大,对实时性要求不高,面向主题。
针对这两种典型的系统,DB2提供了很好的支持。对于OLTP系统和数据量较小的OLAP系统,可以采用单分区架构。
但是有一些OLAP系统,比如国内一些通信公司和电力公司的经营分析系统,包含的数据超过几十TB,一台机器的处理性能根本无法满足要求。这时,可考虑DB2的多
分区架构,即Shared Nothing架构。这种架构的优点就是能够充分利用系统资源,将一个大型的查询分解成若干个小查询并行运行在不同的系统中。由于每一个分区只能够访问自己分区的数据,当查询数据需要关联时。需要在分区中交换必要的数据,分区之间使用一种叫做FCM(Fast Communication Manager)的通信机制。这种架构对系统设计人员要求较高,一定要充分理解优化器与系统访问数据的规则,并且设计很好的分区键,才能够尽可能避免分区间大量的数据交换。
与Share-Nothing相对的另外一种常见的架构是Share-Disk。Share-Disk架构允许所有机器都可以访问全部的数据,好处是管理起来相对方便,而且任意一台机器宕机后,只要存储部分不出问题,其他机器上的系统可以照样访问数据。Share-Disk的设计目标主要是提供高可用性,一般用于OLTP系统。
2. 主要模块介绍
上图描述了DB2的进程模型,长方形代表处理进程,椭圆形代表处理线程,DB2的主进程是db2sysc,在这个处理进程下有许多线 程,最主要的线程也是叫db2sysc,这个主要的线程派生了其他子线程。当一个远程的应用程序比如采用sql connect语句链接服务器时,通讯协议的远程监听器将接收这个请求,并联系db2agent,agent是一个代表DB2实现一些小操作的处理程序, 当发出请求的应用程序是本地的,也就是和DB2服务器在同一服务器上,如果不在同一个服务器上,那么采用db2tcpcm处理本地请求,如果在一台服务器 上采
用db2ipccm线程来处理请求。如果发生本地和异地并行的情况,db2agent会生成其他线程的代理db2agntp线程。其他的线程如 db2pfchr、db2loggr、db2dlock它们应用到不同的目的。
3. 主要进程介绍
? db2sysc (Linux) db2syscs (Win)
DB2的主系统控制器或者引擎,对于一个完整的分区其中只有一个包含多线程的主引擎进程。所有的引擎可以分 派单元都是进程中的线程。没有这个进程数据库服务器是无法工作的。
? db2acd
主管运行状况监视器和自动维护实用程序的自主计算守护程序。此进程以前称为db2hmon ? Db2wdong
DB2的看门狗,是db2sysc的父进程。如果db2sysc集成非正常终止,它将清除所占用的资源。 ? Db2vend
在主 进程之外的围栏进程,所有db29.5的第三方代码都在这 个进程中运行。 ? Db2fmp
围栏进程,在防火墙外运行用户的存储程序 和用户定义函数代码。此进程代替了db2老版本中的db2udf和db2dari进程。
4. 主要线程介绍
? Db2sysc
系 统控制线程。负责实例的启动关闭和管理正在运行的实例。 ? Db2tcpcm
tcoip交互监听器 ? Db2agent
协调代理代表应用程序实现数据库操作
? Db2agntp
如果intra-parallel的属性是yes,那么会产生活动的副代理。它会为应用程序执行数据库操作。Dbagent将协调不同的db2agntp副代理的工作。 ? Db2pfchr
db2异步io数据读取 ? Db2pclnr
db2异步io数据写入
二.DB2数据库配置参数
收集性能测试项目中DB2数据库一些参数的最佳配置或DB2官网的推荐配置。
1. 监控开关参数
Db2数据库默认情况下,监控参数一部分是处于关闭状态的,因此在需要监控数据库时,需打开部分监控,命令如下:
? 查看当前监控开关配置情况:
Db2 get dbm cfg on为开启 off为关闭
? 修改某项开关的配置:
Db2 update dbm cfg using DFT_MON_BUFPOOL = on --开启缓冲池的监控 Db2 update dbm cfg using DFT_MON_BUFPOOL = off --关闭缓冲池的监控
建议:因监控需消耗系统资源,尽量减少对数据库性能的影响,建议开启需要监控项的监控开关。
? 锁事件提醒级别查看及配置:
db2 get db cfg |grep MON_LCK_MSG_LVL 返回当前数据库的配置,其中 0 为不记录信息 1 为仅记录错误
2 记录服务和非服务错误 缺省是3,记录db2的错误和警告 4 是记录全部信息,包括成功执行的信息
修改返回信息级别:
Db2 update db cfg MON_LCK_MSG_LVL using 3 --将级别改为3
2. 影响数据库性能参数
? 查看当前数据库缓冲池页信息:
db2 \返回数据库缓冲池名、缓冲池页数、页大小
若数据库缓冲池使用自动增长方式,上述指令不能查询到缓冲池的页数,建议使用以下方式查看:
使用Spogtight 连接需要监控的数据库,使用快捷键ctrl + p 切换到数据库缓冲池信息页,其中size 显示当前缓冲池大小、缓冲池页数。 ? 数据库缓冲池大小修改:
alter bufferpool bp4k immediate size 1010 将缓冲池BP4K 的页数调整到1010 建议:将 BUFFPAGE 设置成 40000 个页(160 MB),或者等于机器总内存的 10%,或将bufferpool设置成自动增长。 ? 表空间信息查看
Db2pd –d scnx_db –tablespaces 显示表空间信息
重点关注数据库使用了哪些表空间、表空间的页数、页大小、已使用多少页、剩余多少页、是否自动增加
建议:根据表的大小设置不同规格(4k、8k、16k、32k)的表空间,将表空间设置为自动增长的方式。
? 锁配置信息查看
Db2 get db cfg |grep –i lock
获取LOCKTIMEOUT 这项指标的值,若为-1 表示锁永远不会超时。 建议:根据业务需求,修改锁超时时间。
? 修改锁超时时间
Update db cfg LOCKTIMEOUT using 1 ---表示锁等待超时时间为1秒
? 数据库最大应用数
Db2 get db cfg |grep –i applications 返回MAXAPPLS 建议:将此指标值设置为自动增长