我们将Oracle 11g上的数据集市/仓库实施为星型架构。业务报告是使用OBIEE设计的。我有ETL背景,对OBIEE几乎一无所知。
设计好OBIEE RPD之后,我看到OBIEE开始在后台生成SELECT查询,以便将数据提供给报告。在许多情况下,我注意到SELECT查询没有得到优化(大的事实表在单独的WITH子句中被完整扫描不止一次)。
当报告性能不佳时,OBIEE查询将被发送到ETL团队进行性能调优。我对如何调优它们感到困惑,因为它们是自动生成的。我知道可以选择用OBIEE (不通过RPD)为每个报告编写自定义sql,但我们的标准不允许这样做,我也认为它没有利用OBIEE的好处。
有没有人遇到过类似的问题?如何调优这样的查询?
发布于 2016-03-21 20:16:48
正如jackohug所说,OBIEE是一个SQL生成器,通常的方法是尝试优化OBIEE生成的查询,而不是试图更改此查询。不知何故,根据性能问题,您可以尝试一些技巧。首先,您的表是否已分区,您的报表是否可以从分区中受益?其次,在事实表上添加索引,以便维度上的任何筛选器都可以访问事实表。第三,构建聚集表,恢复事实表,因此当报告没有显示太多详细信息时,您首先访问数据少得多的聚集表,只有当用户深入结构(同时,他们正在对感兴趣的数据应用筛选器)时,他们才访问详细的事实表,但应用筛选器以避免完全扫描。您还可以告诉OBIEE在访问表时使用提示,尽管对于Direct Database Query,我不推荐这样做,但我会首先尝试使用前三种方法进行优化。问候
发布于 2016-03-18 10:32:10
如果您具有诊断和优化包许可证,则可以运行SQL优化指导。SQL优化顾问正在优化模式下运行优化程序,它可能能够生成具有更好的执行计划的SQL概要文件。有时,顾问也会推荐索引进行调优。SQL配置文件和索引都不需要更改应用程序。
发布于 2016-08-20 00:39:32
我还没有在使用SQL调优顾问方面取得很大成功。一些SQL调优经验和一些研究通常可以产生一个好得多的计划。
如果所有层都构建得很好,您所需要的只是最后一次调整,然后使用SQL提示在报告(Answer/Analysis)的开头添加一个隐藏列。
在通过RPD层添加提示时,我会非常小心,因为其他人会以许多不同和意想不到的方式连接和使用表。
https://stackoverflow.com/questions/36060579
复制相似问题