楼主: biti_rainy

[精华] 一条sql导致数据库整体性能下降的诊断和解决的全过程

[复制链接]
论坛徽章:
92
2011新春纪念徽章
日期:2011-01-25 15:42:33咸鸭蛋
日期:2012-03-19 10:46:00版主1段
日期:2012-05-15 15:24:11奥运会纪念徽章:排球
日期:2012-08-29 07:02:50奥运会纪念徽章:跳水
日期:2012-09-26 06:44:27ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32奥运会纪念徽章:击剑
日期:2012-10-12 07:20:332013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-02-13 15:13:20
21#
发表于 2004-9-21 13:06 | 只看该作者

Re: 你昨天是用什么语句分析的表?

最初由 Fenng 发布
[B]analyze table im_blacklist compute statistics; 类似这样?

analyze 分析得到的柱状图有的时候不是很准确 [/B]


同感  如下方法更好一点
EXECUTE DBMS_STATS.GATHER_TABLE_STATS
(‘fdamuser’,'App_AssetInFolder, method_opt=>'for columns FolderID,Display  size skewonly');

在处理 柱状图和BIND VAR之间始终很麻烦

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
22#
发表于 2004-9-21 13:09 | 只看该作者
最初由 fly_bug 发布
[B]今天早上一来,数据库load就比往常高了许多。想想数据库唯一的变化是昨天早上我曾经重新分析过数据库对象。


请教一个问题,如何监控数据库load是不是高了? [/B]


linux下可以用top

使用道具 举报

回复
论坛徽章:
60
2007年度最佳版主
日期:2008-04-03 16:46:15现任管理团队成员
日期:2011-05-07 01:45:08双黄蛋
日期:2011-06-15 17:03:34ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
23#
发表于 2004-9-21 13:25 | 只看该作者

Re: Re: 你昨天是用什么语句分析的表?

最初由 grassbell 发布
[B]

这样怎么能得到住状图?


应该是类似于这样的吧。。。

analyze table im_blacklist compute statistics
for table
for all indexes
for all indexed columns

而且使用了默认的75个buckets [/B]


我那句话要说的意思是analyze 不如dbms包

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
24#
 楼主| 发表于 2004-9-21 14:05 | 只看该作者
在 analyze  and  dbms_stats 包的问题上,包括 histograms ,大家放心,这个东西我已经考究过2年了。不会犯一般性的错误。


我现在陷入的困境是研究 cost 的计算方法上

目前通过测试我大抵知道 对于字符串计算histograms中
end point  value 是最长取 14 个字符,根据 ascii * power(256,x) + ascii * power(256,x-1) + ...+ ascii * power(256,0)  来计算
x最大为14,若字符串定义长度超过14则取14,小于14则是按照实际定义长度计算。

但是如何计算  DENS: 上我遭遇到了麻烦,并不是 1/NDV,在字符串有 histograms (example  size=75 )的时候 ,计算方法我目前并没有掌握。  即使知道了 DENS ,计算cost的时候如果是单列索引,那就是 clus * dens + x (几乎可以忽略的值,这里不详细说明了)  ,但是如果是 复合索引,这里又出现很大的未知的东西,恐怕是难以通过实验的方法来很好地掌握计算方法的。很多时候靠的就是感觉了


于是,最后我决定:

使用 dbms_stats包创建statistics 表,每次分析对象前备份statistics,不周期性地分析对象,潜在的风险太大。发现不合适的对象,部分地分析。结合周期性的statspack数据 观察本次分析带来的影响,如果对整体性能有明显影响 及时调整(包括根据以前statistics恢复 或者 备份新的良好的statistics)。
大家千万要注意,尤其分析的时候带着 for  all  indexed  columns 这样的 方法,一定要小心观察。如果不做好statistics备份出了问题很麻烦。 在数据库运行比较稳定的状况下不要轻易分析。

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
25#
 楼主| 发表于 2004-9-21 14:08 | 只看该作者
至于 dbms_stats包,前天早上我还遇到一个bug,已经mail通知alibaba所有dba了:


hi,all!

今天早上对数据库对象进行分析的时候遭遇一个bug   ,当时弄的我莫名其妙,某些表和索引都存在这个问题,有时表重新单个分析就好了,而索引在rebuild之后才好,查了下metalink 发现是bug ,解决办法就是设置 百分比为 99.999

The information in this article applies to:
Oracle Server - Enterprise Edition - Version: 9.2.0.4
This problem can occur on any platform.                                               

Errors
ORA-6512 "at %sline %s"
ORA-904 %s: invalid identifier / invalid column name

Symptoms
Analyze with DBMS_STATS with 100 percent gives the following error:

ORA-904: : invalid identifier
ORA-6512: at "SYS.DBMS_STATS", line 9375
ORA-6512: at "SYS.DBMS_STATS", line 9389
ORA-6512: at line 1
Cause
While using dbms_stats, if we use 100 percent the statistics are gathered in "compute statistics" mode. The compute statistics mode of gathering statistics causes the error ORA-904. There is an internal Bug logged for this.
Fix
Use percentage to be less than 100.
Even 99.999 works fine.

This issue has been resolved in 9.2.0.5

This is not recommended but, ANALYZE command can be used too.

使用道具 举报

回复
论坛徽章:
60
2007年度最佳版主
日期:2008-04-03 16:46:15现任管理团队成员
日期:2011-05-07 01:45:08双黄蛋
日期:2011-06-15 17:03:34ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
26#
发表于 2004-9-21 14:22 | 只看该作者
哈 看来你们的库还是9204

9205 也有很多新的问题

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
27#
 楼主| 发表于 2004-9-21 14:34 | 只看该作者

Re: Re: 你昨天是用什么语句分析的表?

最初由 玉面飞龙 发布
[B]

同感  如下方法更好一点
EXECUTE DBMS_STATS.GATHER_TABLE_STATS
(‘fdamuser’,'App_AssetInFolder, method_opt=>'for columns FolderID,Display  size skewonly');

在处理 柱状图和BIND VAR之间始终很麻烦 [/B]


9204 中存在histograms,bind  var 在cbo 中  hard  parse的时候会窥视 value 的,这个才造成了我所遇到的问题。  现在对于要分析  columns 的东西要保持警惕

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
28#
发表于 2004-9-21 14:44 | 只看该作者
最初由 Fenng 发布
[B]哈 看来你们的库还是9204

9205 也有很多新的问题 [/B]


还是别升级到9205了,我遇到的问题也N多。

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
29#
 楼主| 发表于 2004-9-21 15:17 | 只看该作者
最初由 abcd 发布
[B]

还是别升级到9205了,我遇到的问题也N多。 [/B]


oracle 的兄弟告诉偶们说:  不要升级到 9205  

使用道具 举报

回复
论坛徽章:
113
生肖徽章2007版:羊
日期:2011-10-11 10:20:29生肖徽章2007版:羊
日期:2011-10-11 10:20:29生肖徽章2007版:羊
日期:2011-10-11 10:20:29生肖徽章2007版:羊
日期:2011-10-11 10:20:29生肖徽章:猴
日期:2007-04-10 01:23:40生肖徽章:虎
日期:2011-10-11 10:20:29生肖徽章:羊
日期:2007-08-12 22:22:56生肖徽章:兔
日期:2007-08-15 17:25:14生肖徽章:虎
日期:2011-10-11 10:20:29生肖徽章:虎
日期:2007-09-24 07:24:16
30#
发表于 2004-9-27 15:38 | 只看该作者
值得学习,收藏!

使用道具 举报

回复

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

本版积分规则 发表回复

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