楼主: foreverlee

[性能调整] 超大表的优化问题

[复制链接]
论坛徽章:
3
授权会员
日期:2006-04-18 13:25:09生肖徽章2007版:猴
日期:2009-02-04 17:50:05ITPUB学员
日期:2011-08-03 10:55:36
11#
 楼主| 发表于 2004-10-26 13:29 | 只看该作者
目前没有走mview这种方式.不过我会向项目经理建议.


目前解决方案是这样:
我做了一个Job 每天夜里3点左右执行一个procedure,这个procedure的核心语句就是
“select ma_id,tu_id,count(*) from cs
where
utc>=trunc(sysdate-1,'DD')
and utc< trunc(sysdate,'DD)
group by ma_id,tu_id.

通过这个procedure每天夜里3点统计前一天的相关业务增量.把增量结果放到事先建好的表AMOUNT中.

应用通过select AMOUNT表做统计.

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
12#
发表于 2004-10-26 13:42 | 只看该作者
最初由 yangtingkun 发布
[B]不知道他所谓的增量统计要干什么?

总不能直接select出来结果吧。
既然是通过job调用,应该是存放到某个表中?

修改一下你的查询,从物化视图上查询,速度不就快得多了。 [/B]


为什么说从物化视图查询就快多了?请说明。

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
13#
发表于 2004-10-26 13:48 | 只看该作者
最初由 husthxd 发布
[B]

sysdate是个变量,不知道物化视图刷新时候的机制是如何?
要做个实验看看...

btw:考虑在utc上建分区. [/B]


对!若UTC表示的是一年中的第几天即可。

使用道具 举报

回复
论坛徽章:
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
14#
发表于 2004-10-26 14:00 | 只看该作者
最初由 ZALBB 发布
[B]

为什么说从物化视图查询就快多了?请说明。 [/B]


建立一个大致如下的物化视图
create materialized view mv_view  as
select ma_id,tu_id, floor(utc/86400) utc, count(*) count from cs
group by ma_id,tu_id, floor(utc/86400);

修改查询mv_view表为
select ma_id, tu_id, count from mv_view
where utc = smtools.date2utc(trunc(sysdate)-1);

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2004-10-26 15:48 | 只看该作者

用物化试图的话,只能对简单表做,你想用哪种刷新?

最初由 yangtingkun 发布
[B]

建立一个大致如下的物化视图
create materialized view mv_view  as
select ma_id,tu_id, floor(utc/86400) utc, count(*) count from cs
group by ma_id,tu_id, floor(utc/86400);

修改查询mv_view表为
select ma_id, tu_id, count from mv_view
where utc = smtools.date2utc(trunc(sysdate)-1); [/B]



我建议别用物化视图。还有,
select ma_id,tu_id,count(*) from cs
where
/*utc>=trunc(sysdate-1,'DD')
and utc< trunc(sysdate,'DD)
*/
utc=trunc(sysdate-1,'dd')
group by ma_id,tu_id.挺好的。

使用道具 举报

回复
论坛徽章:
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-10-26 16:00 | 只看该作者

Re: 用物化试图的话,只能对简单表做,你想用哪种刷新?

最初由 fifali 发布
[B]


我建议别用物化视图。还有,
select ma_id,tu_id,count(*) from cs
where
/*utc>=trunc(sysdate-1,'DD')
and utc< trunc(sysdate,'DD)
*/
utc=trunc(sysdate-1,'dd')
group by ma_id,tu_id.挺好的。 [/B]


如果楼主给出的sql已经是完整的话。
这个物化视图是支持refresh fast on commit的。

你给出的那个sql得到的结果都不对吧。

使用道具 举报

回复
论坛徽章:
2
会员2006贡献徽章
日期:2006-04-17 13:46:342009日食纪念
日期:2009-07-22 09:30:00
17#
发表于 2004-10-26 16:47 | 只看该作者
建立复合索引 utc,ma_id,tu_id
“select ma_id,tu_id,count(*) from cs
where
utc>=trunc(sysdate-1,'DD')
and utc< trunc(sysdate,'DD)
group by ma_id,tu_id.


要使得这个语句利用到这个索引。

另外,假如你这个语句需要重复执行好几次,建议将结果放在另外一张表中,只有第一次是执行这个sql,以后都是去直接读取结果了

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期: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:142013年新春福章
日期:2013-02-25 14:51:24
18#
发表于 2004-10-26 17:03 | 只看该作者
1.现在有性能的problem吗?
2。核心sql的执行计划?
3,具体的index,partition?

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
19#
发表于 2004-10-26 17:21 | 只看该作者
最初由 4pal 发布
[B]
另外,假如你这个语句需要重复执行好几次,建议将结果放在另外一张表中,只有第一次是执行这个sql,以后都是去直接读取结果了 [/B]


怎么读取结果?

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2004-10-26 18:08 | 只看该作者
晕!

使用道具 举报

回复

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

本版积分规则 发表回复

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