楼主: kelsoncong

[精华] 数据库调优的三板斧[已结贴]

[复制链接]
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
141#
发表于 2012-6-27 21:35 | 只看该作者
有幸得见三把斧头,谢谢楼主,都是经验之谈

使用道具 举报

回复
论坛徽章:
6
ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:01ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28茶鸡蛋
日期:2011-11-16 14:44:052012新春纪念徽章
日期:2012-01-04 11:50:442013年新春福章
日期:2013-02-25 14:51:24
142#
发表于 2012-6-27 23:45 | 只看该作者
看过了,确实简单又有效,而且平时都有用过,但没想到在这个场景下效果是如此的好。

使用道具 举报

回复
论坛徽章:
5
2010新春纪念徽章
日期:2010-03-01 11:08:292010年世界杯参赛球队:南非
日期:2010-06-20 11:17:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:272010广州亚运会纪念徽章:田径
日期:2011-01-09 00:21:452011新春纪念徽章
日期:2011-02-18 11:42:49
143#
发表于 2012-6-28 15:49 | 只看该作者
finalarrow 发表于 2012-6-26 15:16
对的。如果partition分区一开始没数据,然后新加了数据马上操作,很容易引起 Nest Loop的执行计划,这时就 ...

是的,仓库系统程序动态建表很普遍,除非插入数据后,做分析,然后再跑后续处理,但是这样也容易影响并行性能,目前还没找到好的解决办法。

使用道具 举报

回复
论坛徽章:
20
马上有钱
日期:2014-03-05 18:13:002013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:072012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41迷宫蛋
日期:2011-11-07 14:46:51茶鸡蛋
日期:2011-07-11 20:36:00咸鸭蛋
日期:2011-06-30 15:11:57辩论纪念章
日期:2010-11-15 09:41:552010广州亚运会纪念徽章:网球
日期:2011-05-11 14:11:47
144#
发表于 2012-6-28 16:03 | 只看该作者
lei 发表于 2012-6-28 15:49
是的,仓库系统程序动态建表很普遍,除非插入数据后,做分析,然后再跑后续处理,但是这样也容易影响并行 ...

“但是这样也容易影响并行性能”? ——不是非常明白,这种情况下,要么锁定分析计划,要么加hint,要么马上对单个partition进行分析。

难道说,partition 装载新数据时,也是采用parallel并行的方式吗? 但这好像不影响吧,除非有多个新加数据来源才不好控制。

使用道具 举报

回复
论坛徽章:
5
2010新春纪念徽章
日期:2010-03-01 11:08:292010年世界杯参赛球队:南非
日期:2010-06-20 11:17:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:272010广州亚运会纪念徽章:田径
日期:2011-01-09 00:21:452011新春纪念徽章
日期:2011-02-18 11:42:49
145#
发表于 2012-6-28 23:19 | 只看该作者
finalarrow 发表于 2012-6-28 16:03
“但是这样也容易影响并行性能”? ——不是非常明白,这种情况下,要么锁定分析计划,要么加hint,要么马 ...

1,如果对单分区分析,分析期间ETL调度是没法继续调用后续的依赖该表的任务的,这影响了整体的并发效率,而hint不总是有效。
2,装载的时候的确是用parallel的,存在较多并发加载到同一分区的情况。

使用道具 举报

回复
论坛徽章:
43
ITPUB9周年纪念徽章
日期:2012-09-28 16:17:24马上有钱
日期:2014-06-16 17:13:52马上有对象
日期:2014-06-16 17:13:52马上加薪
日期:2014-06-16 17:13:52现任管理团队成员
日期:2014-06-17 02:21:03版主1段
日期:2014-06-17 02:21:04马上有车
日期:2014-10-24 22:35:032010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:19
146#
发表于 2012-6-29 12:18 | 只看该作者
nice job

使用道具 举报

回复
论坛徽章:
190
生肖徽章:狗
日期:2006-11-23 04:26:03生肖徽章:羊
日期:2007-09-26 17:08:21生肖徽章:马
日期:2007-09-26 17:08:49授权会员
日期:2007-12-31 19:14:41生肖徽章2007版:牛
日期:2008-03-28 10:02:30奥运会纪念徽章:柔道
日期:2008-04-30 16:28:44奥运会纪念徽章:垒球
日期:2008-05-12 21:28:28奥运会纪念徽章:体操
日期:2008-06-26 10:00:41奥运会纪念徽章:沙滩排球
日期:2008-07-27 12:41:59奥运会纪念徽章:艺术体操
日期:2008-07-30 11:09:47
147#
发表于 2012-6-29 13:34 | 只看该作者
对于大数据量常用的招数:
1.分区表操作:分区交换,并行操作,本地分区索引
2.表压缩操作:插入后再做压缩,提升查询性能,节约空间。

使用道具 举报

回复
论坛徽章:
20
马上有钱
日期:2014-03-05 18:13:002013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:072012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41迷宫蛋
日期:2011-11-07 14:46:51茶鸡蛋
日期:2011-07-11 20:36:00咸鸭蛋
日期:2011-06-30 15:11:57辩论纪念章
日期:2010-11-15 09:41:552010广州亚运会纪念徽章:网球
日期:2011-05-11 14:11:47
148#
发表于 2012-6-29 13:40 | 只看该作者
lei 发表于 2012-6-28 23:19
1,如果对单分区分析,分析期间ETL调度是没法继续调用后续的依赖该表的任务的,这影响了整体的并发效率, ...

嗯,那就是大家业务场景不相同了。那估计考虑不同的方案,没有最好的,只有最适合的。

使用道具 举报

回复
论坛徽章:
70
夏利
日期:2013-09-29 21:02:15天蝎座
日期:2016-03-08 22:25:51嫦娥
日期:2014-03-04 16:46:45ITPUB年度最佳技术原创精华奖
日期:2014-03-04 16:19:29马上加薪
日期: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马上有车
日期:2014-02-18 16:41:11
149#
发表于 2012-6-29 16:15 | 只看该作者
本帖最后由 vage 于 2012-6-29 16:34 编辑

好帖。
lorikyo 的 加索引,加hint,收集统计信息 , 言简意赅。

众大神对压缩表的讨论让我涨了见识。
看来11G还真是搞出不少新特性,要加快学习了。
我也总结一下系统调优的三板斧:

1、发现问题
   通常有人说慢,然后查看AWR、确定大概方向。如果是SQL问题,按照lorikyo的三板斧,调优SQL。如果不是SQL问题,可以进一步查看ASH中等待事件。

2、分析问题
   以等待事件为入手点,在测试库中模拟问题。可以使用10046,也可以使用DTrace+GDB,确定等待事件的原因。

3、解决问题
   找到原因,通常都可以有解决方案。

   说个以前碰到的例子,不过不是调优,但和我说的三板爷比较粘近:

第一步:发现问题:
   有客户反应,从某天开始,每天11点半左右,会有短时间连接不到数据库。查看数据库资料,发现多项指标在问题时间段有一分钟左右的突增,如下图:

图片链接是http://space.itpub.net/321157/viewspace-734158

如图所示,很多指标先降后增。

第二步:分析问题
各项资料指标下降,可能在降的时候,数据库很多操作被什么原因阻塞住了,当阻塞没有时,被阻塞的操作突然执行成功,导致很多指标冲高。
接下来的工作,就是查看等待事件了。根据等待事件,就可以判断出来当时的阻塞是什么原因。
由于是9i,没有ASH可看,到第二天11点多、问题重现时查看等待事件,结果,没有发现啥可疑的等待事件。

既然没有等待事件,就说明在问题出现时刻,多项资料指标下降的原因不是Oracle。
如果根本原因不是Oracle,很有可能就是网络了。
我们把目光转向使用同一交换机的一批MySQL上,经过MySQL DBA的定位,果然,在11点多同一时刻,MySQL有通过网络大量传送数据。

原因找到了,MySQL向外传送大量数据,占用了大量带宽,导致用户无法连接到Oracle。

第三步:解决问题
  将MySQL迁移到其他交换机。问题解决。

使用道具 举报

回复
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
150#
发表于 2012-6-29 22:04 | 只看该作者
数据仓库1:分布IO,2:用大块,3:根据业务排序数据提高聚合度,4:建合适的索引,适时采用位图索引,5:及时采集统计数据,6:开并发7:还有•••••

使用道具 举报

回复

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

本版积分规则 发表回复

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