analyze table xxx compute statistics 后系统CPU占用率经常100%

hohai2003 2010-01-15 09:28:54
最近在给客户做数据表分析过后发现业务系统运行时,执行部份SQL时CPU使用率很高达到100%,在分析之前根本不会发生这种情况的,网上搜了一下说分析表后可能会导致系统执行计划的改变,在哪位对analyze table精通的过来帮小弟解释下呢!
...全文
763 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hohai2003 2010-01-16
  • 打赏
  • 举报
回复
谢谢各位了,是SQL执行计划在表ANALYZE后改变了。
inthirties 2010-01-15
  • 打赏
  • 举报
回复
做一些Oracle的监控吧。找出占用资源多的地方分析一下
wh62592855 2010-01-15
  • 打赏
  • 举报
回复
错误的执行计划?

这个"错误的"你是如何来理解的呢?
分析表了以后oracle自然会根据收集来的表的现有统计数据作出执行计划的判断啊

你说的"错误的"是指仅仅因为新的执行计划执行比较慢 就认为是错误的?

望指点一下~
vc555 2010-01-15
  • 打赏
  • 举报
回复
正是因为表分析,导致了sql使用了错误的执行计划,从而引起cpu高消耗。
wh62592855 2010-01-15
  • 打赏
  • 举报
回复
关键还是找出占CPU过高的SQL
再根据情况进行改进
和分析表没太大关系
分析表只是收集下统计数据而已
vc555 2010-01-15
  • 打赏
  • 举报
回复
就是执行计划变了。
现在的任务就是找出占cpu最多的sql是什么。
select * from v$sqlarea order by cpu_time desc,然后调整其执行计划。
lwei_998 2010-01-15
  • 打赏
  • 举报
回复
可以做个AWR分析一下。
抓出占用cpu多的top sql,查看执行计划。看sql是否有问题。
1.analyze table最好在业务不繁忙的时候做
2.analyze table 不一定能提高效率。
3.检查top sql中的表是否产生了行迁移
select table_name, num_rows, chain_cnt
from user_tables
where num_rows > 1000
and chain_cnt > 1
order by chain_cnt desc
crazylaa 2010-01-15
  • 打赏
  • 举报
回复
执行计划有变。
SambaGao 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 suiziguo 的回复:]
先找出TOP CPU的SQL,然后看看其执行计划。
再用HINT和优化器模式改变其执行计划,看看有什么不妥。
[/Quote]

分析一下执行计划
suiziguo 2010-01-15
  • 打赏
  • 举报
回复
先找出TOP CPU的SQL,然后看看其执行计划。
再用HINT和优化器模式改变其执行计划,看看有什么不妥。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧