楼主: biti_rainy

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

[复制链接]
论坛徽章:
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
11#
 楼主| 发表于 2004-9-20 20:57 | 只看该作者
最初由 piner 发布
[B]语句调多了,都麻木了

看着我们7000s/2小时的cpu时间,再看看你的cpu时间
两个字,羡慕
开始的时候,也只有1000多,咋就涨的这么快呢? [/B]


话不能这么说么,逻辑上你们比我们多 4颗 么

linux 下 cpu 的利用总是不充分,那也是没办法的事,有些sql不正常load就上去了

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2004-9-20 21:48 | 只看该作者
biti_rainy斑竹,你QQ号多少?我才学oracle,有些问题想问你,都是一句话就能回答的问题。呵呵

使用道具 举报

回复
论坛徽章:
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
13#
 楼主| 发表于 2004-9-20 22:34 | 只看该作者
最初由 shining_forever 发布
[B]一、select COLUMN_NAME ,ENDPOINT_NUMBER, ENDPOINT_VALUE , ENDPOINT_ACTUAL_VALUE from dba_histograms
where table_name = 'IM_BLACKLIST' and column_name = 'BLACK_ID';
是干什么的?

二、为什么原来的endpoint_value值也差别很大:
而biti却认为“我们发现原来的histograms值分布比较均匀,而昨天分析后的值分布就有一些地方是集中的”,我看两次分析的对应条目的数据差别很小啊?这是如何分析的呢?


-------  这里的value 是根据字符串的值计算出来的hash  value,有好几个value都是一样的,这样若有字符串恰好落在这个值范围内,那么就会被认为占表百分比比较大。  具体的内容,你搜索oracle文档 dba_histograms 有比较详细的介绍




三、关于trace 文件的分析:
SINGLE TABLE ACCESS PATH
Column: BLACK_ID Col#: 2 Table: IM_BLACKLIST Alias: IM_BLACKLIST
NDV: 17069 NULLS: 0 DENS: 1.4470e-03
HEIGHT BALANCED HISTOGRAM: #BKT: 75 #VAL: 75
TABLE: IM_BLACKLIST ORIG CDN: 57267 ROUNDED CDN: 83 CMPTD CDN: 83
Access path: tsc Resc: 38 Resp: 38
这一段是全表扫描的相关信息是嘛?但这段信息中在我看来并没有全表扫描的任何信息,
怎么判断它是全表扫描的相关内容呢?是否这个tsc是FTS的意思?总之这段信息是什么内容基本不懂。
Access path: index (equal)
Index: IM_BLACKLIST_LID_IND
TABLE: IM_BLACKLIST
RSC_CPU: 0 RSC_IO: 65
这是里的两个指标RSC_CPU: 0 RSC_IO: 65 和全表扫描的两个指标tsc Resc: 38 Resp: 38完全不是同一个标准啊?如何类比的?



你可以参考两个文件末尾的
Best so far: TABLE#: 0 CST: 38 CDN: 83 BYTES: 2407
Final:
CST: 38 CDN: 83 RSC: 38 RSP: 38 BYTES: 2407
IO-RSC: 38 IO-RSP: 38 CPU-RSC: 0 CPU-RSP: 0


Join order[1]: IM_BLACKLIST [IM_BLACKLIST]
Best so far: TABLE#: 0 CST: 4 CDN: 3 BYTES: 75
Final:
CST: 4 CDN: 3 RSC: 4 RSP: 4 BYTES: 75
IO-RSC: 4 IO-RSP: 4 CPU-RSC: 0 CPU-RSP: 0


当然,原来曾读过10053的8i的一些文字,有点了解。至于9204的 10053 ,这样简单的文件,直接就可以读出端倪的。 很显然最后确定的 cost 分别为 4 /  38  ,参考前文,可以知道落在这里。至于 resc  / rsc_io 这样的名称,是在 表扫描和 索引扫描中命名方式的差异,都是cost计算的其中一个标准值,只不过这里占了主导而已

比如 cpu-rsp 都是0  ,是因为系统没有引入cpu作为 cost计算的参考值





四、这个histograms是什么概念,为何用analyze table im_blacklist compute statistics;后它会基本消失了呢?SQL解析为何要参考它?


----histograms 读 oracle  document 再说

[/B]



这些东西,难以完全阐述清楚,必须建立在你自己有一定了解的基础上才好交流

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34优秀写手
日期:2013-12-18 09:29:13
14#
发表于 2004-9-20 23:21 | 只看该作者
已经非常感谢biti了,还得多学习。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
15#
发表于 2004-9-21 11:15 | 只看该作者
很好的实际解决问题方法。值得学习!收藏

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
16#
发表于 2004-9-21 11:37 | 只看该作者
最初由 biti_rainy 发布
[B]

每天 8/9/10/15/16/17/23  7个整点执行的报告

job  interval

trunc(sysdate) +  decode(to_char(sysdate,'hh24'),8,9,9,10,10,15,15,16,16,17,17,23,32)/24

因为8---10点 和 15---17 点是高峰期

这是长期统计观察的依据,不是碰巧 [/B]


这样控制job时间还是第一次看到。
又学了一招

使用道具 举报

回复
论坛徽章:
168
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-12-05 16:08:56ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41设计板块每日发贴之星
日期:2011-07-22 01:01:02ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:16管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
17#
发表于 2004-9-21 12:25 | 只看该作者
最初由 yangtingkun 发布
[B]

这样控制job时间还是第一次看到。
又学了一招
[/B]


me 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
18#
发表于 2004-9-21 12:56 | 只看该作者

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

analyze table im_blacklist compute statistics; 类似这样?

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

使用道具 举报

回复
论坛徽章:
2
2008新春纪念徽章
日期:2008-02-13 12:43:032010新春纪念徽章
日期:2010-03-01 11:08:24
19#
发表于 2004-9-21 12:56 | 只看该作者
今天早上一来,数据库load就比往常高了许多。想想数据库唯一的变化是昨天早上我曾经重新分析过数据库对象。


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

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期: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:36
20#
发表于 2004-9-21 13:03 | 只看该作者

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

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

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


这样怎么能得到住状图?


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

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

而且使用了默认的75个buckets

使用道具 举报

回复

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

本版积分规则 发表回复

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