楼主: 〇〇

一个oracle执行计划不好的例子,dm的计划如何?

[复制链接]
论坛徽章:
1
ITPUB社区OCM联盟徽章
日期:2014-11-17 13:33:27
41#
发表于 2013-9-12 09:18 | 只看该作者
经过测试,貌似12c没有这问题........人家早改了....LZ用的哪个版本,我也学习下oracle怎么改进的。
  1. SQL> set autot trace exp
  2. SQL> select b.b,
  3.   2         max(b.id) , /*很快*/
  4.   3         min(b.id) min_used
  5.   4    from big b,
  6.   5         (select distinct e.a
  7.   6            from e
  8.   7          where e.a like '1%') m
  9.   8  where b.a>=3
  10.   9     and b.a<=4
  11. 10     and b.b= m.a
  12. 11  group by b.b;
  13. 已用时间:  00: 00: 00.00

  14. 执行计划
  15. ----------------------------------------------------------
  16. Plan hash value: 1357920637

  17. ------------------------------------------------------------------------------
  18. | Id  | Operation             | Name | Rows  | Bytes | Cost (%CPU)| Time     |
  19. ------------------------------------------------------------------------------
  20. |   0 | SELECT STATEMENT      |      |    13 |   182 |   631   (2)| 00:00:01 |
  21. |   1 |  HASH GROUP BY        |      |    13 |   182 |   631   (2)| 00:00:01 |
  22. |*  2 |   HASH JOIN RIGHT SEMI|      |   128K|  1751K|   629   (2)| 00:00:01 |
  23. |*  3 |    TABLE ACCESS FULL  | E    |   500 |  1500 |     7   (0)| 00:00:01 |
  24. |*  4 |    TABLE ACCESS FULL  | BIG  |   285K|  3069K|   621   (2)| 00:00:01 |
  25. ------------------------------------------------------------------------------

  26. Predicate Information (identified by operation id):
  27. ---------------------------------------------------

  28.    2 - access("B"."B"="E"."A")
  29.    3 - filter(TO_CHAR("E"."A") LIKE '1%')
  30.    4 - filter("B"."A">=3 AND "B"."A"<=4)

  31. Note
  32. -----
  33.    - automatic DOP: Computed Degree of Parallelism is 1 because of parallel threshold

  34. SQL> select b.b,
  35.   2         max(b.id) - /*很慢*/
  36.   3         min(b.id) min_used
  37.   4    from big b,
  38.   5         (select distinct e.a
  39.   6            from e
  40.   7          where e.a like '1%') m
  41.   8  where b.a>=3
  42.   9     and b.a<=4
  43. 10     and b.b= m.a
  44. 11  group by b.b;
  45. 已用时间:  00: 00: 00.00

  46. 执行计划
  47. ----------------------------------------------------------
  48. Plan hash value: 1357920637

  49. ------------------------------------------------------------------------------
  50. | Id  | Operation             | Name | Rows  | Bytes | Cost (%CPU)| Time     |
  51. ------------------------------------------------------------------------------
  52. |   0 | SELECT STATEMENT      |      |    13 |   182 |   631   (2)| 00:00:01 |
  53. |   1 |  HASH GROUP BY        |      |    13 |   182 |   631   (2)| 00:00:01 |
  54. |*  2 |   HASH JOIN RIGHT SEMI|      |   128K|  1751K|   629   (2)| 00:00:01 |
  55. |*  3 |    TABLE ACCESS FULL  | E    |   500 |  1500 |     7   (0)| 00:00:01 |
  56. |*  4 |    TABLE ACCESS FULL  | BIG  |   285K|  3069K|   621   (2)| 00:00:01 |
  57. ------------------------------------------------------------------------------

  58. Predicate Information (identified by operation id):
  59. ---------------------------------------------------

  60.    2 - access("B"."B"="E"."A")
  61.    3 - filter(TO_CHAR("E"."A") LIKE '1%')
  62.    4 - filter("B"."A">=3 AND "B"."A"<=4)

  63. Note
  64. -----
  65.    - automatic DOP: Computed Degree of Parallelism is 1 because of parallel threshold

  66. SQL> set autot off
  67. SQL> select b.b,
  68.   2         max(b.id) - /*很慢*/
  69.   3         min(b.id) min_used
  70.   4    from big b,
  71.   5         (select distinct e.a
  72.   6            from e
  73.   7          where e.a like '1%') m
  74.   8  where b.a>=3
  75.   9     and b.a<=4
  76. 10     and b.b= m.a
  77. 11  group by b.b;

  78.          B   MIN_USED
  79. ---------- ----------
  80.          1     999804
  81.         11     999978
  82.         12     999804
  83.         10     999978

  84. 已用时间:  00: 00: 00.09
复制代码

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
42#
 楼主| 发表于 2013-9-12 09:22 | 只看该作者
aio_o_ 发表于 2013-9-12 09:18
经过测试,貌似12c没有这问题........人家早改了....LZ用的哪个版本,我也学习下oracle怎么改进的。

SQL> show rel
release 1102000200

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
43#
发表于 2013-9-13 13:28 | 只看该作者
〇〇 发表于 2013-9-12 09:22
SQL> show rel
release 1102000200

产品总会不断的改进的。

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
44#
 楼主| 发表于 2013-9-13 23:28 | 只看该作者
aio_o_ 发表于 2013-9-12 09:18
经过测试,貌似12c没有这问题........人家早改了....LZ用的哪个版本,我也学习下oracle怎么改进的。

我的12c set autot on很奇怪
http://www.itpub.net/thread-1816462-1-1.html

使用道具 举报

回复
论坛徽章:
6
2012新春纪念徽章
日期:2012-01-04 11:53:292013年新春福章
日期:2013-02-25 14:51:24林肯
日期:2013-09-12 15:57:33优秀写手
日期:2013-12-18 09:29:09慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31
45#
发表于 2013-9-16 09:03 | 只看该作者
lyzhanhun 发表于 2013-9-11 01:55
楼主的插入在Dm中一个存在的问题, 上面的Insert语句connect by后面用改用ROWNUM条件,跟用Level计划上有区别 ...

牛人啊!

使用道具 举报

回复
论坛徽章:
0
46#
发表于 2013-9-16 11:19 | 只看该作者
lyzhanhun 发表于 2013-9-11 01:55
楼主的插入在Dm中一个存在的问题, 上面的Insert语句connect by后面用改用ROWNUM条件,跟用Level计划上有区别 ...

分析得相当透彻。
原因基本分析到位,最关键的问题是connect by里面的rownum造成bdta size减少为1,从而导致insert执行次数多。

关于rownum在connect by里面的实现,需要进一步优化。

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
47#
 楼主| 发表于 2013-9-23 20:26 | 只看该作者
northcliff 发表于 2013-9-16 11:19
分析得相当透彻。
原因基本分析到位,最关键的问题是connect by里面的rownum造成bdta size减少为1,从而 ...

不知道这个问题什么版本能修复

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
48#
发表于 2013-9-24 11:24 | 只看该作者
〇〇 发表于 2013-9-23 20:26
不知道这个问题什么版本能修复

下一个更新的版本估计能够解决

使用道具 举报

回复
论坛徽章:
4
2011新春纪念徽章
日期:2011-02-18 11:42:48奥迪
日期:2013-12-07 17:06:42优秀写手
日期:2013-12-18 09:29:09日产
日期:2014-01-15 14:18:32
49#
发表于 2013-9-27 14:51 | 只看该作者
mark下,回去测试看看

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
50#
发表于 2013-10-8 15:54 | 只看该作者
dajun539 发表于 2013-9-27 14:51
mark下,回去测试看看

好,多发点价值贴。

使用道具 举报

回复

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

本版积分规则 发表回复

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