DB2数据库-性能测试监控(3)

2019-08-31 11:16

? active_sorts------数据库中当前已经分配了排序堆的排序数

db2 get snapshot for db on dbname | grep sorts |more

? log_reads-------由记录程序从磁盘读取的日志页数

? 客户端创建实例:

1) 开始?运行?cmd

2) cd c:\\program file\\IBM\\SQLINB\\BIN [进入客户端安装bin目录]

3) c:\\program file\\IBM\\SQLINB\\BIN >DB2CW.BAT [初始化DB2命令]

4) 在新开的cmd中执行“db2 catalog tcpip node test remote 192.168.42.102 server 50000” [test是自定义的节点名称,也是连接时的实例名称;192.168.42.102是远程连接的主机地址;50000是服务端的端口号]

5) 执行“db2 catalog dbsmsdb at node test” [使节点与数据库绑定,smsdb是需要连接的数据库名称;test是自己创建的节点名称]

6)执行“db2 terminate” [使绑定生效]

7) 执行“db2 connect to smsdbuser user_name using password” [连接数据库成

功 ]

? 使用loadrunner监测db2数据库:

需要在本机建立到db2数据库服务器的连接,使用db2的client端进行配置就可以了,下边是对loadrunner进行的设置

打开db2资源监控图后选择Add meaSurements菜单后增加数据的ip和节点名称 如图1

图一

在输入的name框中需要使用数据库的实例名称,这个名称可以通过db2client端的控制中心工具中看到(在建立完到db2 server以后就已经存在的),

输入数据库用户名和密码后,即可以选择要监测的项目,最后选择log_reads完成监控配置,如图三所示:

图3

此项指标为数据库从磁盘读的页数,值越大,产生IO 的可能性越大

? log_writes-----由记录程序写入磁盘的日志页数

方法同log_reads

? lock_waits----应用程序或连接等待锁定的总次数

db2 get snapshot for db on dbname | grep waits |more

3. 其他指标

? Overall_hit_ratio ----缓冲池命中率

select substr(bp_name,1,30) as bp_name, data_hit_ratio_percent, index_hit_ratio_percent, total_hit_ratio_percent from sysibmadm.bp_hitratio where bp_name not like 'ibmsystem%'

缓冲池的命中率应不低于95%

? Index_hit_rate -----某缓冲池索引命中率

? db2 get snapshot for bufferpools on scnx_db

? 获得某个缓冲池下以下两项指标的值

Buffer pool index logical reads Buffer pool index physical reads

? 通过如下公式计算索引命中率

索引命中率 = (1 - ( 缓冲池索引物理读 / 缓冲池索引逻辑读 ) ) ) * 100%

索引命中率应不低于90%

? Total_Locks ---查看当前系统锁的总数

db2pd -db scnx_db -locks |grep 0x |wc –l 统计总数

db2pd –db scnx_db –locks 查看当前系统锁的信息

? Memory_Current_size 当前内存使用情况

? 使用db2top –d scnx_db 连接到scnx_db数据库

? 键入m ,查看current size栏,显示当前各个内存池的内存使用情况

? Memory_hight_watermark 内存使用高水位

? 使用db2top –d scnx_db 连接到scnx_db数据库

? 键入m ,查看hight_watermart栏,显示当内存的高水位

? Sort_Overflows 排序溢出的次数

db2 get snapshot for database on scnx_db |grep -i sort 排序溢出数目越低,数据库排序效果越好 ? SQL_Current 查看当前数据库执行的SQL

? 使用spotlight 连接到数据库

? 使用快捷键 ctrl+s 切换到SQL_CURRENT界面,从而查询当前数据库执行的SQL

重点关注SQL耗时 ? 查看数据库全表扫描的情况

db2pd -db scnx_db –tcbstats 其中scans显示某表被全表扫描的总次数

? 查询造成锁的SQL语句

db2 \from table (SNAPSHOT_STATEMENT('SCNX_DB', -1)) as B where AGENT_ID in (select AGENT_ID_HOLDING_LK from table(SNAPSHOT_LOCKWAIT('SCNX_DB',-1))as A order by LOCK_WAIT_START_TIME ASC FETCH FIRST 20 ROWS ONLY) order by STMT_ELAPSED_TIME_MS DESC\

? 监控执行次数最多的SQL

Select num_executions as “num execs”, average_execution_time_s as “avg time(sec)”,

stmt_sorts as “num sorts”, sort_per_execution as “sorts per stmt”, substr(stmt_text,1,35) as “sqlstmt” from sysibmadm.top_dynamic_sql where num_executions>0 order by 1 desc fetch first 5rows only ? 包缓存命中率监控

使用spotlight连接到目标数据库后,在首页便能获取数据库当前package cache hit rate 的值。

建议:若系统是静态的或没有应用开发,可以考虑减少Catalog Cache的内存分配, 若为统计系统则需要增大Catalog Cache的分配 ? 引起锁的SQL监控

select AGENT_ID, substr(STMT_TEXT,1,60) as STMT_TEXT, STMT_ELAPSED_TIME_MS from table (SNAPSHOT_STATEMENT('adms', -1)) as B where AGENT_ID in (select

AGENT_ID_HOLDING_LK from table(SNAPSHOT_LOCKWAIT ('adms',-1))as A order by LOCK_WAIT_START_TIME ASC FETCH FIRST 20 ROWS ONLY) order by STMT_ELAPSED_TIME_MS DESC

? 最消耗CPU资源的SQL

select (total_usr_cpu_time+total_sys_cpu_time) as total_cpu_time,

substr(stmt_text,1,256)as stmt_text from table(snap_get_dyn_sql_v91('',-2)) as s order by total_cpu_time desc fetch first 10 rows only

五.项目实践

收集实际性能测试项目中对DB2数据库的监控、调优的思路或方法,为以后的性能测试项目提供参考。

1. 排序溢出

现象:

某项目通过spotlight监控数据库发现出现大量排序溢出的现象,且数据库IO较高。通过监控数据库内存池的分配,发现排序堆设置过小,且不会自动增长。

优化:

将缓冲池修改为自动增加以上问题解决

在单交易负载测试时(查询交易),数据库CPU消耗过高,IO较低,通过监控,

发现出现大量排序溢出。

使用db2 get snapshot for database on adms |grep -i sort 查看排序的信息,发现排序数逐渐增加,且出现大量排序溢出。溢出比例高达20%。

使用select STMT_SORTS, SORTS_PER_EXECUTION, substr(STMT_TEXT,1,600) as STMT_TEXT from SYSIBMADM.TOP_DYNAMIC_SQL 查看排序次数较多的SQL 获取SQL 后分析其执行计划。

根据执行计划,建议开发组根据DB2ADVIS生成的建议进行调整。

2. 包缓存命中率过低

现象:

在项目测试中,执行单交易负载测试时,通过Spotlight监控发现,PACKAGE-CACHE –HIT-RATIO命中率较低,约65%,在增加PACKACE CACHE 大小后,其命中率无明显改善。 分析解决:

使用SPOTLIGHT监控当前执行SQL ,发现数据库中多条相似SQL 出现在当前执行的SQL中,仔细分析,发现这些SQL仅数值不同。因此同一SQL被DB2识别成不同SQL导致,数据库 在执行前多次编译,因此导致包缓存命中率较低。最后使用变量绑定的方式解决问题。

3. SQL语句不合理

4. 索引不合理


DB2数据库-性能测试监控(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:船舶设备项目可行性研究报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: