- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于 DB2 常见性能问题的解决参考
最近一个项目在做性能测试时, 在并发达到一定数后, DB2 数据库资源占用很大, 必须
对数据库和应用进行优化。该项目要求性能指标( CPU70%,内存占用 70%,IO60),按
照网友介绍的经验,分别针对 CPU、内存、 IO 进行问题排查和分析。现将过程总结如下:
一、CPU分析
通过资源监视器查看一个或多个 CPU 的使用率,确定确实存在 CPU使用率一直居高不
下的情况。
1、首先排除掉存在死循环的情况。 (并发下来后, CPU使用率会降下来) 。
2、DB2 占用 CPU的主要行为有 :语句编译、大量排序、 DB2 实用工具运行。
3、先查看是否有大量的语句编译 :
通过 DB2 的表函数 MON_GET_WORKLOAD ,可以查看到:select varchar(workload_name,30)
as workload_name,sum(total_cpu_time),sum(total_compile_proc_time),sum(act_rqsts_total),
um(total_compilations),sum(total_act_time), sum(pkg_cache_inserts), sum(pkg_cache_lookups)
from TABLE(MON_GET_WORKLOAD(,-2)) as T group by workload_name
如果 compile_proc_time 高于 5-10% 的 total_cpu_time ,并且
pkg_cache_inserts/pkg_cache_lookups 高于 4-5%,则数据库在语句编译上花费了太多的时间。必
须调大语句集中器 STMT_CONC 的大小。采用逐步调大的方式来跟踪效果。
4、查看是否存在大量的 SORT
首先通过 db2 的快照,看是否存在大量的 sort 溢出
Sort overflows/Total sorts * 100% 表示排序溢出百分比, 通常情况下, 该值应该小于
3。如果大于 3,表示溢出的比例太高,需要优化;
Total sorts time(ms)/Total sorts 表示每次排序花费的时间 ( 毫秒 ),对于交易系统来
说,该值最好小于 50ms;
Total sorts time(ms)/(Commit statements attempted + Rollback statements
attempted) 表示每个事务花费在排序上的时间。一个事务响应时间包含很多方面,
比如读 / 写时间、锁时间、排序时间、 CPU 时间等。排序时间越少,最终用户的
响应时间也越快,占用的 CPU 资源也越少。
从上图的 total sorts 和 Sort overflows 可以看出,溢出比例超过 6,所以存在大量的 sort
溢出。再继续跟踪 sort 溢出的 SQL。
从 SQL快照或 DB2 管理视图 SYSIBMADM.SNAPDYN_SQL 中获取排序最多、耗时
最长 SQL 语句,进行分析和优化。 。
Select sort_overflows,total_sort_time,substr(stmt_text,1,100) as sqltext from
SYSIBMADM.SNAPDYN_SQL order by stmt_sorts desc fetch first 50 rows only
Select sort_overflows,total_sort_time,user_cpu,substr(stmt_text,1,100) as sqltext from
SYSIBMADM.SNAPDYN_SQL order by user_cpu desc fetch first 50 rows only
5、接下来,查看是否 DB2 的实用工具占用了较多的 CPU 。 通过表函数
MON_GET_WORKLOAD 来查看: select varchar(workload_name,30) as
workload_name,sum(total_loads), sum(total_load_proc_time),sum(total_runstats),
sum(total_runstats_proc_time) from TABLE(MON_GET_WORKLOAD(,-2)) as T group by
workload_name
如果 LOAD、runstats 占用 cpu 较多,可以设置数据库配置参数 util_impact_limit 对实用程序进
行节流;或者关掉数据库的自动维护功能。
二、内存分析
数据库主机是一台 32G 内存的
文档评论(0)