楼主: myfriend2010

这个sql怎么优化!

[复制链接]
招聘 : 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
41#
 楼主| 发表于 2008-5-7 13:12 | 只看该作者
结果出来了:
不设置 current query optimization
--           4561588 rows inserted in 4046.70 secs
设置set current query optimization 0;
--               4561588 rows inserted in 6529.09 secs.

[ 本帖最后由 myfriend2010 于 2008-5-7 13:51 编辑 ]

使用道具 举报

回复
招聘 : 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
42#
 楼主| 发表于 2008-5-7 13:38 | 只看该作者
恩,单分区的SORTHEAP= 1555(4k) 大约6M,4个分区大小也就是24M,差了好几个数量级!

原帖由 unixnewbie 于 2008-5-7 12:31 发表


Don't forget you're running DPF. That 8xxMB is just a total across all the partitions.

使用道具 举报

回复
招聘 : 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
43#
发表于 2008-5-7 19:10 | 只看该作者
看来估计没有什么好的方法提高性能了,MSJOIN应该是expected。如果可能尽量增大sort heap

应该是单分区8xx MB per sort吧,那个TQ可是在最上面呢

使用道具 举报

回复
论坛徽章:
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
44#
发表于 2008-5-7 20:16 | 只看该作者
三个五百万的TABLE JOIN实际并不很大。

4561588 rows inserted in 4046.70 secs

感觉是不行。

target table的TABLESPACE是SMS还是DMS?PARTITION KEY也是CUST_ID吧?

还,TARGET TABLE是空的,还是里面已经有很多数据了?

使用道具 举报

回复
论坛徽章:
18
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44马上有对象
日期: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:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:52
45#
发表于 2008-5-7 20:18 | 只看该作者
原帖由 wangzhonnew 于 7/5/2008 21:10 发表
看来估计没有什么好的方法提高性能了,MSJOIN应该是expected。如果可能尽量增大sort heap

应该是单分区8xx MB per sort吧,那个TQ可是在最上面呢


嗯,应该是单分区的数据,除了你给出的证据,还有第一个explain最后也有“Source for statistics:                 Single Node”的字样。

如果实在要提高性能,且不能增加内存的话,如果cust_id很连续且不在乎storage消耗的话,用range cluster table。这样就不需要在每个tascan后做额外的sort+tbscan。从第一个explain中反映的io估算情况来开,每次额外的sort+tbscan都double了原来tbscan的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
46#
 楼主| 发表于 2008-5-7 20:47 | 只看该作者
原帖由 askgyliu 于 2008-5-7 20:16 发表
三个五百万的TABLE JOIN实际并不很大。

4561588 rows inserted in 4046.70 secs

感觉是不行。

target table的TABLESPACE是SMS还是DMS?PARTITION KEY也是CUST_ID吧?

还,TARGET TABLE是空的,还是里面已经有很多数据了?



target table的TABLESPACE是SMS,PARTITION KEY=CUST_ID

TARGET TABLE为自定义的一个临时表!

使用道具 举报

回复
招聘 : 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
47#
 楼主| 发表于 2008-5-7 20:50 | 只看该作者
现在我考虑的是这个softheap怎么增加!?

SHEAPTHRES增加4倍和单分区SORTHEAP增加一倍?是不是可以这么理解?

使用道具 举报

回复
招聘 : 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
48#
发表于 2008-5-7 20:59 | 只看该作者
hey, since the result set is relativly small (only 4.5 million rows), possible to create MQT for it?
taking the row width = 1500, 4.5 million took around 6-10G disk space

使用道具 举报

回复
招聘 : 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
49#
发表于 2008-5-7 21:01 | 只看该作者
原帖由 askgyliu 于 2008-5-7 21:16 发表
三个五百万的TABLE JOIN实际并不很大。

4561588 rows inserted in 4046.70 secs

感觉是不行。

target table的TABLESPACE是SMS还是DMS?PARTITION KEY也是CUST_ID吧?

还,TARGET TABLE是空的,还是里面已经有很多数据了?

3个五百万的join开销的确不大,但是3个五百万的排序就恐怖了 :)

使用道具 举报

回复
招聘 : 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
50#
发表于 2008-5-7 21:01 | 只看该作者
恭喜!您刚拣到ITPUB送出的新年红包。25PUB币!

使用道具 举报

回复

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

本版积分规则 发表回复

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