biee性能优化
0
需求就是针对biee性能的优化,我新建报表,抓取sql ,sql如下:selectcount(distinct nvl(case
when T67365.DELETE_FLG = 'N'and T67365.ORG_FLG = 'N' and T67365.PRTNR_FLG = 'N'and T67365.ACCNT_FLG = 'Y' and T81742.ACCNT_FLG = 'Y'then T157680.ROW_WID end,0)) as c1,
T67365.X_HSHLDHD_OCC_CD as c2
from W_PARTY_ORG_D T67365,
W_ASSET_F
T81742 /* Fact_W_ASSET_F */,
W_PARTY_D
T157680
where (T67365.ROW_WID = T157680.PARTY_ORG_WIDand
T81742.CUSTOMER_WID =T157680.ROW_WID and
T67365.X_ACCNT_TYPE_CD <> '公司客户')
group byT67365.X_HSHLDHD_OCC_CD
报表返回需要1分多,但是我直接在数据库里面执行也需要1分半左右,
W_ASSET_F这个表的记录是500w多行
这只是其中的一个例子,但是其他的sql 也是同样的,在数据库里面执行需要的时候也很长
针对这样的问题,怎么能从biee的角度来实现biee的优化呢?
when T67365.DELETE_FLG = 'N'and T67365.ORG_FLG = 'N' and T67365.PRTNR_FLG = 'N'and T67365.ACCNT_FLG = 'Y' and T81742.ACCNT_FLG = 'Y'then T157680.ROW_WID end,0)) as c1,
T67365.X_HSHLDHD_OCC_CD as c2
from W_PARTY_ORG_D T67365,
W_ASSET_F
T81742 /* Fact_W_ASSET_F */,
W_PARTY_D
T157680
where (T67365.ROW_WID = T157680.PARTY_ORG_WIDand
T81742.CUSTOMER_WID =T157680.ROW_WID and
T67365.X_ACCNT_TYPE_CD <> '公司客户')
group byT67365.X_HSHLDHD_OCC_CD
报表返回需要1分多,但是我直接在数据库里面执行也需要1分半左右,
W_ASSET_F这个表的记录是500w多行
这只是其中的一个例子,但是其他的sql 也是同样的,在数据库里面执行需要的时候也很长
针对这样的问题,怎么能从biee的角度来实现biee的优化呢?
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
4 个回复
汪照坤(KhunOne) - 坚持到底! 产品架构设计、数据预测分析 2015-08-17 回答
赞同来自: 梁勇 、冰咖啡 、叶小凡
2.根据需求,报表展示的字段,合理创建事实表。如:根据不同维度层级新建不同粒度的事实表。
除此之外,你也可以:
1.RPD模型的设计需要合理,维度和事实表关联字段要一致,最好都以number类型做关联。
2.如果数据经常使用的是最近几个月的数据,但是事实表包含多年的数据,可以适当做历史表分类。
3.也可以使用RPD的碎片功能。
(设计时候,尽量保证select的数据没有常年不用的数据。)
yang8889 - 80后IT男 2015-09-02 回答
赞同来自: 梁勇 、依依 、joljess
2、尽量使用汇总表,最好不要所有分析都是从最明细的表里汇总上来。
3、关联字段最好number,减少char的使用。
seng - 从事BI、大数据、数据分析工作 2015-09-02 回答
赞同来自: 依依 、天涯浪子 、joljess
一般来说数据库优化(非系统参数调整),步骤如下
1.收集统计信息
2.查看执行计划是否按你的想法执行,以上的语句我觉得表连接方式是hash join
3.如果预计是使用索引执行计划却没有,那就调整吧
4.数据量再大考虑增加并行度
以上都基于你的数据库机器的配置了,特别是IO的性能.
依依 - BI爱好者 2015-08-18 回答
赞同来自:
谢谢你的回答啊!!1,我看了执行计划,有走索引
2,根据不同维度层级新建不同粒度的事实表,这个我没有做,能简单的给我举个例子么?新建的事实表是不是就是根据不同的维度算出数量
3,rpd的碎片功能,能简单的讲解一下么?
多谢了!!!