楼主: myfriend2010

[FAQ] sql 使CPU使用100%,棘手!

[复制链接]
论坛徽章:
21
在线时间
日期:2007-07-25 04:01:022012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
61#
发表于 2007-12-11 20:12 | 只看该作者
多 和 少 时 相 对 而 言 的 。

可 以 把 我 在 回 贴 53 所 要 的 结 果 放 上 来 吗 ?

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
62#
 楼主| 发表于 2007-12-12 09:38 | 只看该作者
可以啊!但是由于数据量很大,估计的下班没有人用数据库的时候才可以做!

askgyliu 是好心人啊!

这样吧这边有我和狼的最新的分析结果!

你可以看看!如果能看出什么问题来,我就按照你53楼的方法!

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
63#
 楼主| 发表于 2007-12-12 09:42 | 只看该作者
exfmt.txt为9月份的表做的sql,执行正常,也就是不会报CPU使用100%
exfmt1.txt为10月份的表做的sql,执行不正常,也就是会报CPU使用100%
exfmt2.txt为10月份的表做的sql,但是把临时表session.V_PRE_EXP_GROUP_CUST1换成fact表,执行正常,也就是不会报CPU使用100%

exfmt1.txt

148.01 KB, 下载次数: 24

exfmt2.txt

164.8 KB, 下载次数: 16

exfmt.txt

147.75 KB, 下载次数: 20

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
64#
 楼主| 发表于 2007-12-12 09:43 | 只看该作者
askgyliu帮忙看看这个sql,如果有必要我把系统数据库的support分析结果也发上来!

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
65#
 楼主| 发表于 2007-12-12 09:46 | 只看该作者
to: wangzhonnew,这边版本是8.1,在存储过程中每发对临时表进行分析!所以我感觉就算是临时表统计信息有问题,我这边也没法解决啊!

使用道具 举报

回复
论坛徽章:
21
在线时间
日期:2007-07-25 04:01:022012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
66#
发表于 2007-12-12 15:12 | 只看该作者
这最近的三个SQL跟最开始的两个SQL是不相同的?

这里面还有INSERT的问题?

我只能给些建议:

0) 只有人类才会觉得两个SQL很相似,会去比较。对DB2来说,一个小小的改变,对DB2来说就是完全不相同的SQL,而ACCESS PLAN可能会完全不相同。

1) 看看机子上有多少个CPU?有4个NODES,还有INTRA-PARTITION PARALLELISM,那起码得要有8个CPU。如果DB2给了个很RESOURCE-INTENSIVE但OPTIMIZED的路径,但机子RESOURCE跟不上,那怎么办?巧妇难为无米之炊。等待的时间是会成指数增加的,而不是线性的。

2) INSERT TEMP TABLE还有另外的考虑。比如说TEMP一般是SMS TABLESPACE,对大量的数据INSERT并不好。所以你的PERFORMANCE可能就是因为INSERT太慢了而导致的。如果你把TEMP TABLE全换成普通的TABLE,PERFORMANCE突然好了,那很大可能就是SMS跟DMS的区别了。我遇到过这种情况,就是TARGETED TABLE从SMS换成DMS,整个INSERT用SMS本来两个多钟头没结果,用DMS不到五分钟就好了。

3) 尽可能别写太复杂的SQL。几个简单的SQL往往会比一个复杂的SQL执行得快,也比较容易OPTIMIZE。越复杂的SQL就会有越多可能的ACCESS PATH,就越可能有莫名其妙的PERFORMANCE UNCERTAINTY。

使用道具 举报

回复
论坛徽章:
21
在线时间
日期:2007-07-25 04:01:022012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:23
67#
发表于 2007-12-12 15:32 | 只看该作者
再有一点非常非典型的个人想法。若是SQL有PERFORMANCE问题,而CPU/DISK IO又很低的话,可能就是很棘手了。

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
68#
 楼主| 发表于 2007-12-12 18:18 | 只看该作者
to:askgyliu
Q:这最近的三个SQL跟最开始的两个SQL是不相同的?

A:是啊,我把10月份的表重新生成并分析后,就这个样子了!这是最新的执行计划,以前的执行计划无法得到了!

Q:这里面还有INSERT的问题?

A:恩,63楼已经说的很详细了!

Q:看看机子上有多少个CPU?有4个NODES,还有INTRA-PARTITION PARALLELISM,那起码得要有8个CPU。如果DB2给了个很RESOURCE-INTENSIVE但OPTIMIZED的路径,但机子RESOURCE跟不上,那怎么办?巧妇难为无米之炊。等待的时间是会成指数增加的,而不是线性的。

A: CPU 4*2 ,内存16G

Q: INSERT TEMP TABLE还有另外的考虑。比如说TEMP一般是SMS TABLESPACE,对大量的数据INSERT并不好。所以你的PERFORMANCE可能就是因为INSERT太慢了而导致的。如果你把TEMP TABLE全换成普通的TABLE,PERFORMANCE突然好了,那很大可能就是SMS跟DMS的区别了。我遇到过这种情况,就是TARGETED TABLE从SMS换成DMS,整个INSERT用SMS本来两个多钟头没结果,用DMS不到五分钟就好了。

A: 这边无论临时表还是fact表都是SMS的!呵呵

使用道具 举报

回复
招聘 : c/c++研发
论坛徽章:
45
技术图书徽章
日期:2014-03-10 14:09:192012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
69#
发表于 2007-12-12 22:16 | 只看该作者
原帖由 myfriend2010 于 2007-12-12 10:46 发表
to: wangzhonnew,这边版本是8.1,在存储过程中每发对临时表进行分析!所以我感觉就算是临时表统计信息有问题,我这边也没法解决啊!

1) add index to cust_id
2) runstats to the temp table

使用道具 举报

回复
招聘 : c/c++研发
论坛徽章:
45
技术图书徽章
日期:2014-03-10 14:09:192012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
70#
发表于 2007-12-12 22:19 | 只看该作者
and i didn't see you pasted select count(*) result from temp table, please do it and we'll see if the statistics is really off from the real number of rows...

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表