楼主: kelsoncong

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

[复制链接]
论坛徽章:
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
81#
发表于 2012-6-26 15:17 | 只看该作者
ZALBB 发表于 2012-6-26 15:03
HINT 一般只用来调优,不适合放在SQL语句里。

我们之前是不同意在 SQL 中加 HINT 的,这种情况下,可能会采用锁定分析计划。

使用道具 举报

回复
论坛徽章:
31
2009日食纪念
日期:2009-07-22 09:30:00奥迪
日期:2013-11-14 11:32:05路虎
日期:2013-12-08 15:08:54比亚迪
日期:2013-12-13 12:43:05问答徽章
日期:2013-12-22 20:52:17大众
日期:2013-12-26 17:00:48技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-03-03 19:35:04
82#
发表于 2012-6-26 15:36 | 只看该作者
拜读,收获不小

使用道具 举报

回复
论坛徽章:
31
2009日食纪念
日期:2009-07-22 09:30:00奥迪
日期:2013-11-14 11:32:05路虎
日期:2013-12-08 15:08:54比亚迪
日期:2013-12-13 12:43:05问答徽章
日期:2013-12-22 20:52:17大众
日期:2013-12-26 17:00:48技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09马上有车
日期:2014-03-03 19:35:04
83#
发表于 2012-6-26 15:40 | 只看该作者
我一般的做法是:
收集信息,包括操作系统参数配置、资源使用情况、AWR报告、告警日志等

初步分析一下,哪里有问题再进一步具体问题具体分析

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:体操
日期:2012-06-18 21:02:22
84#
发表于 2012-6-26 15:57 | 只看该作者
需求调优,目前我最常最简单最常用的方法就是大而化小:
比如说需要全国数据,但是分省查再进行汇总的话可以大幅减轻服务器负担
另外对一些大数据  尽量走索引
很多时候走索引效率确实很高

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
85#
 楼主| 发表于 2012-6-26 16:11 | 只看该作者
Lyoohan 发表于 2012-6-26 15:57
需求调优,目前我最常最简单最常用的方法就是大而化小:
比如说需要全国数据,但是分省查再进行汇总的话可以大 ...

没太看明白,直接查全国 和分省查然后汇总性能上有区别吗?能不能给个例子?

使用道具 举报

回复
论坛徽章:
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
86#
发表于 2012-6-26 16:13 | 只看该作者
Lyoohan 发表于 2012-6-26 15:57
需求调优,目前我最常最简单最常用的方法就是大而化小:
比如说需要全国数据,但是分省查再进行汇总的话可以大 ...

那也可以按每个省+时间做partition了

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
87#
 楼主| 发表于 2012-6-26 16:14 | 只看该作者
Lyoohan 发表于 2012-6-26 15:57
需求调优,目前我最常最简单最常用的方法就是大而化小:
比如说需要全国数据,但是分省查再进行汇总的话可以大 ...

关于走索引的问题,可能还是要看实际情况的,在大数据量的仓库环境下,数据装载的时候还是以全表扫为主的,所以通过分区限制全表扫的范围对系统性能帮助会很大.
查询的时候如果数据量不大,通过索引可能性能会有提升,但是对大数量的聚合的报表意义不是很大

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
88#
 楼主| 发表于 2012-6-26 16:16 | 只看该作者
ZALBB 发表于 2012-6-26 15:03
HINT 一般只用来调优,不适合放在SQL语句里。

仓库环境下,放在存储过程里面的还是比较多的,避免因为大量数据装载和删除导致的统计信息的问题,加点hint系统稳定点

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
89#
 楼主| 发表于 2012-6-26 16:16 | 只看该作者
ZALBB 发表于 2012-6-26 15:04
再推荐,10046,跟踪整个语句的执行过程,哪里耗时调哪里。 这招最管用。

这个不错

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
90#
 楼主| 发表于 2012-6-26 16:19 | 只看该作者
finalarrow 发表于 2012-6-26 15:16
对的。如果partition分区一开始没数据,然后新加了数据马上操作,很容易引起 Nest Loop的执行计划,这时就 ...

所以我一般建议在仓库环境下加hint,避免这种新增大量数据或移走大量数据带来的统计信息的问题,从而影响执行计划,我遇到最极端的一个情况是平时15分钟跑完的语句,跑了两天两夜还没跑完,运维DBA忍无可忍,直接kill

使用道具 举报

回复

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

本版积分规则 发表回复

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