楼主: olive

[精华] 如何解决不同SQL之间的性能冲突?

[复制链接]
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
41#
发表于 2002-4-28 09:58 | 只看该作者
to  dblife
我做了你的实验的确发生了这个情况.
找了一下资料发现了下面的一段话
Note: If you want to collect statistics on both the table as a whole and on one or more
columns, be sure to generate the statistics for the table first, and then for the columns.
Otherwise, the table-only ANALYZE will overwrite the histograms generated by the
column ANALYZE. For example, issue the following statements:
ANALYZE TABLE emp ESTIMATE STATISTICS;
ANALYZE TABLE emp ESTIMATE STATISTICS FOR ALL COLUMNS;


我想你应该先做
ANALYZE TABLE emp ESTIMATE STATISTICS;
ANALYZE TABLE emp ESTIMATE STATISTICS FOR ALL indexes;

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
42#
发表于 2002-4-28 10:15 | 只看该作者
哦?还有这种问题,晕倒
oracle这个破东西,呵呵
我一直以为analyze table emp compute statistics for all indexes就一切ok了
至于estimate不过是因为表太大,分析时间过长,才采用呢

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
43#
发表于 2002-4-28 10:17 | 只看该作者
而且还有一个问题,就是estimate分析好像是有时候导致走索引有的时候也无效的
昨天晚上我清楚记得estimate了一次,结果还是table access full,今天早上又estimate一次
又开始用索引了,总之,一团糟

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
44#
发表于 2002-4-28 10:29 | 只看该作者
最初由 parrotao 发布
[B]to  dblife

Otherwise, the table-only ANALYZE will overwrite the histograms generated by the
column ANALYZE.

但是我想这不是你出问题的原因
但我先ANALYZE TABLE
然后再ANALYZE TABLE FOR ALL INDEXES
就OK了


好奇怪呀呀呀呀呀呀呀呀呀呀呀呀

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
45#
发表于 2002-4-28 10:36 | 只看该作者
嗯,我觉得先analyze table compute or estimate
再analyze table compute or estimate for all indexes 就ok了

使用道具 举报

回复
论坛徽章:
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
46#
 楼主| 发表于 2002-4-28 14:11 | 只看该作者

咦,我的帖子被删掉了?

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

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
47#
发表于 2002-4-28 14:36 | 只看该作者
没有删过呀!????

使用道具 举报

回复
论坛徽章:
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
48#
 楼主| 发表于 2002-4-28 14:55 | 只看该作者

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

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

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
49#
发表于 2002-4-28 14:56 | 只看该作者
给个URL我也去看看

使用道具 举报

回复
论坛徽章:
20
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期: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:11:18
50#
发表于 2002-4-28 17:21 | 只看该作者
我曾经在做数据仓库(EXPRESS)加载的时候,也遇到过比较大,比较多的查询,整套查询执行完毕需要24小时左右,而且还总会报sga不够,cursor不够,或者一些内核错误。
后来也发过贴问过,见:
http://www.itpub.net/showthread.php?s=&threadid=2095

我把当时写的心得如下:
“如果表没有做ANAYISE,然后optimizer_mode = choose,则会选择RULE方式优化SQL,会导致SQL的执行路径需要大量的SHARE_POOL_SIZE(The RULE optimizer has generated a SQL statement that has exhausted the maximum available cursor memory area.  This usually results in an ORA-1037.  )”

后来解决方法关键是:
optimizer_mode由choose改为fire_rows,在ORACLE执行SQL之间自动强制对表进行analysis,并自动使用COST方式执行SQL;
这才得以让SQL顺利执行,但速度却没有做过多大的调整。

顺便问一下,Open_cursor所设置的cursor数,是不是使用share_poor_size的空间?

使用道具 举报

回复

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

本版积分规则 发表回复

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