oceanding
作者oceanding·2012-07-29 01:03
系统工程师·ibm

db2性能监控

字数 4723阅读 3213评论 0赞 0
db2性能监控
为了保证监控尽可能多的sql语句,建议增中DBM配置参数mon_heap_sz
get snapshot for dynamic sql on dbname >snap.out

number of executions --执行次数,是累加值
worst preparation time(ms) --最差的sql词句准备时间
Total execution time(sec.ms) sql --语句的总执行时间,可以根据这个时间排序找出执行时间比较长的sql语句
Row read --可帮助识别读取行数最多的Dynamic SQL语句,如果读取行数很多,通常意味着表扫描或是索引扫描,扫描时选择性很小或没有选择性,这同表扫描一样糟糕。

识别锁的存在
unix/linux
grep -n "Deadlocks detected" snap.out | grep -v "=0" | more
windows
findstr /C:"Deadlocks detected" snap.out | findstr /v /c:"=0"
例:要搜索执行最频繁的语句:
unix/linux
grep -n "Number of executions" snap.out | grep -v "=0" | sort -k 5,5rn | more
windows
findstr /c:"Number of executions" snap.out | findstr /v /c:"=0"

事件监控器
1: update monitor switches using statement on
2:创建sql语句的监视器
  db2 create event monitor statmon for statements (eventtype)
  write to file 'C:IBMbutonestatmon'"
  2:创建目录
  md C:IBMbutonestatmon
  3:启动监视器
  db2 set event monitor statmon state 1
  4:执行任务
  do some job to ....
  5:完成输出
  db2 flush event monitor statmon buffer
  6:关闭监视器
  db2 set event monitor statmon state 0
  7:格式化输出
  db2evmon -db dbname -evm statmon >stattrace.txt
  注:查看statmon.log中的sql语句的执行时间

db2pd

b2pd -db 数据库名称 -applications 定位锁等待
db2pd -db 数据库名称 -locks showlock wait 找出表空间id,表id
select tbspace,tabschema,tabname,tableid,tbspaceid from syscat.tables where tbspaceid=xxx and tableid=xxx

db2pd -db dbname -applications 定位status=Lock-wait的应用句柄AppHandl,然后根据这个AppHandl定位交易句柄TranHdl,然后再根据这个交易句柄定位所在的表及表上的加锁情况
db2pd -db dbname –applications,结果如下

Db2pd –db dbname –transactions,结果如下

Db2pd –db dbname –locks,结果如下

诊断锁超时
Db2pd –db dbname –locks –transactions –applications –dynamic
监视内存使用情况:
Db2pd –memblock
确定哪一个应用程序用完了表空间
Db2pd –db gdzj -tcbstats 可以标识对一个表执行的插入操作的次数
然后db2pd –tablespaces
监示恢复db2p d–recovery
监示日志 db2pd –logs
确定事务正在使用的资源数量:db2pd –transactions
收信操作系统信息db2-osinfo
收集数据库管理器配置参数db2pd –dbmcfg
收集数据库配置参数db2pd –db dbname –dbcfg
监控缓冲池信息dbpd –db dbname –bufferpools
监控表空间db2pd –db dbname –tablespaces
监控reorg进度db2pd –reorg
对于经常使用的db2pd选项,建议设置db2pdopt选项,这样可以快速调用db2pdopt设置的选项。
Unix/linux上,如果使用shell是ksh,执行
Export DB2PDOPT=”-db sample –locks –transactions –applications -dynamic”
然后db2pd
Windows上
Set DB2PDOPT=”-db sample –locks –transactions –applications -dynamic”
然后db2pd
使用db2pd监控死锁案例
(1)
Cp $HOME/sqllib/bin/db2cos /$HOME/sqllib
Chmod u+x $HOME/sqllib/db2cos
(2)
1)db2pdcfg –catch deadlock
2)db2pdcfg -911,2


db2tmtrk 用于db2数据库中进行内存跟踪的工具,可以用于查看实例,数据库,代理进程当前对内存的使用状态
db2mtrk -i -d -v
db2mtrk -i 显示当前实例的内存使用情况
db2mtrk -i -v 显示当前实例的内存的详细信息
db2mtrk -d 显示数据库的内存使用情况
db2mtrk -d -v 显示数据库内存使用情况的详细信息
db2mtrk -p 显示代理进程专用内存使用率
-m 参数用于显示最大的内存使用上线
-w 参数用于显示使用过程中内存达到的最大值,即watermark
-r 参数用于重复显示。

使用 LOAD QUERY 查询表的状态
db2 load query table org

通过查看 SYSCAT.TABLES 查询表的状态
db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE 'SYS%' ORDER BY tabname

通过 list history backup all 查看数据库备份情况
db2 list history backup all for sample

db2tbst <tablespace state>

将表空间状态复位成正常
db2 quiesce tablespaces for table tablename reset


返回会话监控开关的状态
db2 get monitor switches


update monitor switches using 为 **** 设置会话监控开关的状态
reset monitor all 复位性能监控程序值
get snapshot for dbm 返回实例级别的性能信息

get snapshot for all on dbname
get snapshot for dynamic sql on dbname
runstats on table tbschema.tbname
reorgchk on table all
reorg table tablename

使用prune清除没用的归档日志
prune logfile prior to s0000100.log


查询数据库sample所有执行过的load命令的历史记录
db2 list history load all for database sample


查询备份是联机备份还是在离线备份
db2 list history backup all for sample
或使用db2ckbkp -a 110814.0001检查

使用db2的恢复帮助工具:
#db2ckrst –d <dbname> –t <timestamp> –r database
命令返回建议的必需的恢复操作命令




数据库配置参数调整

MAXAGENTS 参数表明在任何给定时间接受应用程序请求的数据库管理器代理程序的最大数目。
MAXAGNETS的值应当至少是每个被并发地访问的数据库中的MAXAPPLS(并发应用程序最大数目,该参数指定可以连接(包括本地连接和远程连接)
到一个数据库的并发的应用程序的最大数目。在绝对最小值情况下,将此参数设置为>=(用户连接的数量)值的总和。如果数据库的数量大于NUMDB参数,那么
最安全的方案是使用NUMDB和MAXAPPLS最大值的乘积。

num_poolagents 参数是用于代理程序池增加到多大的准则。如果所创建的代理程序多于该参数值所指定的数目,那么当代理程序执行完自己
当前的请求后将终止运行而不是返回给代理程序池。如果该参数值为0,将按照需要创建代理程序,在代理程序执行完自己当前请求后终止运行。
要避免因在并发连接许多应用程序的OLTP环境中频繁创建和终止代理程序而产生成本,请将num_poolagents值增加到接近maxagents的值。


num_initagents参数决定空闲代理程序的初始数量。这些代理程序是在db2start时在代理程序池中创建的。可以帮助加快在开始使用数据库时连接。

db2 -v get snapshot for database manager
Idle agents 在代理池中空闲代理的数量
agents assigned from pool 从代理池中将一个代理分配出去的次数。
agents created from empty pool 在空池情况下必须创建的代理的数量
如果agent created from emty pool /agents assigned from pool 比例较高(5:1或更大),表明系统的总体工作负载太高。此时
应增加num_poolagents 或是减少maxcagents
如果这个比例较低则表明num_poolagents设的太高。如果发现agents waiting for a token 或agents stolen from another application
不为0,则表明需要增中maxagents

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

  • db2 command
    评论 0 · 赞 0
  • 相关问题

    相关资料

    X社区推广