IT咨询服务Db2数据库sql优化

DB2 SQL语句时间都花在哪个环节?

快照时间是:9:40分
其中APP中的语句信息如下:
Statement type                             = Dynamic SQL Statement
Statement                                  = Fetch
Section number                             = 1
Application creator                        = NULLID
Package name                               = SYSSN100
Consistency Token                          =
Package Version ID                         =
Cursor name                                = SQL_CURSN100C1
Statement database partition number        = 0
Statement start timestamp                  = 03/02/2015 09:09:09.923204  【注意这里,快照时间是9:40】
Statement stop timestamp                   =
Elapsed time of last completed stmt(sec.ms)= 0.000022
Total Statement user CPU time              = 25.329957   【注意这里,为什么这个时间这么小?】
Total Statement system CPU time            = 0.000000
SQL compiler cost estimate in timerons     = 849507   【这个这么高,有没有影响呢?】
SQL compiler cardinality estimate          = 1
Degree of parallelism requested            = 1
Number of agents working on statement      = 1
Number of subagents created for statement  = 1
Statement sorts                            = 0
Total sort time                            = 0
Sort overflows                             = 0
Rows read                                  = 74208
Rows written                               = 0
Rows deleted                               = 0
Rows updated                               = 0
Rows inserted                              = 0
Rows fetched                               = 0
Buffer pool data logical reads             = 94167
Buffer pool data physical reads            = 9266
Buffer pool temporary data logical reads   = 0
Buffer pool temporary data physical reads  = 0
Buffer pool index logical reads            = 339239
Buffer pool index physical reads           = 54478
Buffer pool temporary index logical reads  = 0
Buffer pool temporary index physical reads = 0
Buffer pool xda logical reads              = 0
Buffer pool xda physical reads             = 0
Buffer pool temporary xda logical reads    = 0
Buffer pool temporary xda physical reads   = 0
Blocking cursor                            = YES
Dynamic SQL statement text:
select count(1) 总行数,count(1)    【完全语句就不方便贴这了】

当时整个系统CPU使用率比较高(90%),已确认CPU使用率高是由DB2引的,这个是其中一个正在执行APP的快照。
参与17

16同行回答

整体上说就是编译和执行,这方面相关的内存指标是package cache和statement heap 等。余下的就要看执行计划了。具体执行耗费的时间,和硬件指标、统计信息、数据量、sql写法上都有直接关系,通过执行计划能够看出一条sql 在什么环节和操作上耗费了最多时间,也能据此找到优化点...显示全部
整体上说就是编译和执行,这方面相关的内存指标是package cache和statement heap 等。余下的就要看执行计划了。具体执行耗费的时间,和硬件指标、统计信息、数据量、sql写法上都有直接关系,通过执行计划能够看出一条sql 在什么环节和操作上耗费了最多时间,也能据此找到优化点。收起
证券 · 2015-03-15
浏览1181
db2china2db2china2技术经理DB2咨询服务
回复 13# masaly 这个不错。显示全部
回复 13# masaly
这个不错。收起
IT咨询服务 · 2015-03-14
浏览1178
db2china2db2china2技术经理DB2咨询服务
回复 14# richard_macy 条件因素比较多,且是生产问题,不太好在测试环境重现。重执行单条语句应该是不会重现的。显示全部
回复 14# richard_macy
条件因素比较多,且是生产问题,不太好在测试环境重现。
重执行单条语句应该是不会重现的。收起
IT咨询服务 · 2015-03-14
浏览1161
richard_macyrichard_macy数据库管理员macys
rerun 这个 query, 可以重现问题吗?显示全部
rerun 这个 query, 可以重现问题吗?收起
零售/批发 · 2015-03-09
浏览1162
masalymasaly其它易诚
回复 12# db2china2    请参考这个:    MON_GET_PKG_CACHE_STMT table function    http://www-01.ibm.com/support/kn ... .7.0%2F3-6-1-3-9-25显示全部
回复 12# db2china2


   请参考这个:
    MON_GET_PKG_CACHE_STMT table function

    http://www-01.ibm.com/support/kn ... .7.0%2F3-6-1-3-9-25收起
软件开发 · 2015-03-09
浏览1262
db2china2db2china2技术经理DB2咨询服务
回复 11# masaly 所以想知道在APP快照中,关于此语句的主要时间花在那去了。显示全部
回复 11# masaly
所以想知道在APP快照中,关于此语句的主要时间花在那去了。收起
IT咨询服务 · 2015-03-09
浏览1165
masalymasaly其它易诚
CPU time is taken from OS macros which compute the time the statementneeds CPU cycles.i.e the CPU times are not timestamp related, they are taken from OS CPUmacros, meaning CPU times are recorded based on CPU usage per process.So even though the exec...显示全部
CPU time is taken from OS macros which compute the time the statement
needs CPU cycles.

i.e the CPU times are not timestamp related, they are taken from OS CPU
macros, meaning CPU times are recorded based on CPU usage per process.
So even though the execution time may take 30secs, the process only used
the CPU for 1 second.

There are plenty of time not included in the user+sys cpu time.
- fcm communication
- wait for prefetcher,
- wait for log writter
- wait for....... what ever.收起
软件开发 · 2015-03-09
浏览1344
db2china2db2china2技术经理DB2咨询服务
回复 5# drdb2 快照时间离语句开始时间已经过去30分钟(1800秒)了,语句CPU时间才25秒,相比之下,人个认为语句CPU时间25秒很小很小。而且语句还没stop呢。显示全部
回复 5# drdb2
快照时间离语句开始时间已经过去30分钟(1800秒)了,语句CPU时间才25秒,相比之下,人个认为语句CPU时间25秒很小很小。而且语句还没stop呢。收起
IT咨询服务 · 2015-03-08
浏览1283
db2china2db2china2技术经理DB2咨询服务
回复 4# richard_macy 这个是事后分析,当时的并发量并不大。当然是比平时大,便观察了APP快照的语句CPU时间,都不长(当然,这个快照显示不是最终语句的执行时间,快照是10分钟一次的)。 但有一个特点是:如果SQL compiler cost estimate in timerons     =的是比...显示全部
回复 4# richard_macy
这个是事后分析,当时的并发量并不大。当然是比平时大,便观察了APP快照的语句CPU时间,都不长(当然,这个快照显示不是最终语句的执行时间,快照是10分钟一次的)。

但有一个特点是:如果SQL compiler cost estimate in timerons     =的是比较大的(如4位数以上的),都有类型此次的现象。
怀疑是CPU高是由于编译所造,但又没有拿出确切的数据来证明。此库的包命中率只有50%的。收起
IT咨询服务 · 2015-03-08
浏览1316
db2china2db2china2技术经理DB2咨询服务
回复 4# richard_macy 快照时间离语句开始时间已经去去30分钟(1800秒)了,语句CPU时间才25秒,相比之下,人个认为语句CPU时间25秒很小很小。而且语句还没stop呢。显示全部
回复 4# richard_macy
快照时间离语句开始时间已经去去30分钟(1800秒)了,语句CPU时间才25秒,相比之下,人个认为语句CPU时间25秒很小很小。而且语句还没stop呢。收起
IT咨询服务 · 2015-03-08
浏览1295

提问者

db2china2
技术经理DB2咨询服务
擅长领域: 数据库存储前置系统

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-03-06
  • 关注会员:1 人
  • 问题浏览:9825
  • 最近回答:2015-03-15
  • X社区推广