楼主: olive

如何解决不同SQL之间的性能冲突?

[复制链接]
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
61#
 楼主| 发表于 2002-4-26 14:16 | 只看该作者

返回的记录四百多条

上面那个语句里面batch_nb=269就已经限制了记录数不会超过457。

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
62#
 楼主| 发表于 2002-4-26 16:11 | 只看该作者

不带hint的那个可以

在没有analyze的情况下,前一个(调整了FROM中的table和条件的顺序那个)可以出结果,可以很明显地看到结果集是一部分一部分跳出来的(当tacct.body_nb有较大的变化,比如从2186985跳到2304287,就有较长时间的停顿),总共429条结果,用时1分55秒。这个结果比起analyze后的时间虽然还是有比较大的距离(analyze后的执行时间为6.2秒),但是毕竟已经有了很大的提高!
server是我一个人独占所以上述时间应该是准确的。
带有hint的那个依然最终引起temp溢出。
另外我的sqlplus没有autotrace这个set参数。我的oracle是7.3.4。
深受鼓舞!
我想等最后的优化完成以后(现在还不算最后完成吧,呵呵),斑竹可以做一下总结,说明为什么要这样调整,然后可以作为一个很好的performance tuning的范例!如果需要我做进一步的实验或需要更多的关于这个查询以及相关数据表的介绍,我会尽力提供。希望大家都能从中学到东西。

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
63#
 楼主| 发表于 2002-4-26 16:21 | 只看该作者

To deepblue

我已经下载了sql expert,但是还没有开始试验,我将按照你提示的策略作相应试验,结果我也会贴出来,不过那个时间我估计不会设60分钟,而是3分钟,因为前面斑竹的调整结果已经使运行时间在没有analyze的前提下降低为2分钟了,我相信一定还有更快的结果。只是这个select涉及到七个表,又有那么多条件,排列组合的结果可能是个天文数字...
我目前只能针对这个select做优化,我说的form是最终用户的界面,那是个庞大的应用系统,涉及到几百个form以及许多程序,之间互相调用,我不想去动它了。而这个report是我们开发的specific development,可以深入研究的。

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
64#
 楼主| 发表于 2002-4-26 18:03 | 只看该作者

是的,两分钟还是太慢

要知道这只是对一个batch,其中的主要SELECT的运行时间,因为按照analyze之后运行6.2秒的结果,整个程序要运行28分钟,那如果是2分钟,整个程序运行的时间就差不多要10个小时。虽然这个report不是OLTP,但是10个小时还是太久了。所以还是需要进一步优化,但看来目前已经有曙光了。能不能从index的角度考虑呢?建一些针对这个select的index。
关于autotrace,是直接在sqlplus下输入set autotrace on吗?因为我这样做,它说unknown set option "autotrace",建了plan_table表就可以用了?

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
65#
 楼主| 发表于 2002-4-28 09:44 | 只看该作者

谢谢

好像你知道我在忙什么?

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
66#
 楼主| 发表于 2002-4-28 14:11 | 只看该作者

咦,我的帖子被删掉了?

我刚才贴了个帖子说oralce7的CBO不好,怎么不见了?

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
67#
 楼主| 发表于 2002-4-28 14:55 | 只看该作者

那可能是我发的时候出问题

我在metalink上面看到有人说oracle7的CBO一团糟,建议不要用它,我自己也感觉CBO难以控制,有点像碰运气。

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
68#
 楼主| 发表于 2002-4-28 17:44 | 只看该作者

那个URL一时之间找不到了

他也没有多说,只是说按照他的经验,得出的结论就是,不要用734的CBO。

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
69#
 楼主| 发表于 2002-4-28 19:52 | 只看该作者

关于hints/cbo/rbo有什么好的经验?

例如如何选择index,如何调整SELECT中子句的顺序,如何适当地建立index等。
我曾经碰到过这样的问题,某个report写出来以后发现运行很慢,后来就在某个表加了一个index,运行速度大大加快,可是很快发现另外一个report运行时间变得很慢(都是没有statistics的),唉!

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
70#
 楼主| 发表于 2002-4-29 09:52 | 只看该作者

我现在开始运行lecco

刚才已经找出来所有的plan,一共找了3000多种组合,最后剩下219种不同的plan,现在正在运行,设定的terminate条件是2分15秒。现在为止运行了6种,最好的纪录是58.75秒,对应语句如下。看看它加的+0, ||''之类,这活儿还真不是人干的。
select tacct.body_nb bodynb,
       tacct.nb acctnb,
       tacct.actype_ty,
       tacct.blccl_nb blcclnb,
       tacct.cstgrp_nb cstgrpnb,
       tprprty.propty_cd proptycd,
       tprprty.nb prprtynb,
       tbtchdt.nb_walk_order nbwalkorder
  from tdelpnt,
       tbtchdt,
       taddrid,
       tacct,
       tprprty,
       tprpacc,
       tbody
where tbtchdt.batch_nb = 269
   AND tbtchdt.sectn_cd = taddrid.sectn_cd || ''
   AND tbtchdt.blccl_nb = tacct.blccl_nb
   AND tbtchdt.cstgrp_nb = tacct.cstgrp_nb + 0
   AND taddrid.cd = tbody.addrid_cd || ''
   AND tacct.body_nb = tbody.nb + 0
   AND tacct.body_nb = tprpacc.body_nb + 0
   AND tacct.nb = tprpacc.acct_nb
   AND tprprty.nb = tprpacc.prprty_nb + 0
   AND tprpacc.dt_end is null
   AND tdelpnt.prprty_nb = tprprty.nb + 0
   AND tdelpnt.in_ocpl = '2'
   AND tprpacc.body_nb = tbody.nb + 0
   AND tdelpnt.prprty_nb = tprpacc.prprty_nb + 0
order by tbody.nb

使用道具 举报

回复

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

本版积分规则 发表回复

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