Need and Ways for Performance Optimization in OBIEE
In all my years of working with OBIEE, I have seen a special interest in performance testing and tuning in the recent years. I have been involved in recent past with one of the active engagements for an OBIA system for performance optimization. This lead to a lot of interesting reading and some on the job application, thought should share it with you all.
While Optimizing Performance the most challenging task is to know where to begin. Most of the time Performance issues are raised or known only when we are actually in the performance test phase of the project. Post Analysis we should take the right approach for optimizing the performance and not some shortcut ways. If the analysis suggests that the rpd metadata / dashboard design/ built is the suspect or the underlying data model is not modelled properly optimization techniques are not going to work and redevelopment should be considered as it is rightly said
If a system that has a fundamental design flaw cannot be optimized - it has to be redesigned.
By default whenever OBIEE reports take a long time to return results, end users tend to say "OBIEE does not perform well". There might be different reasons for it other than OBIEE some of them might be the underlying database, network or infrastructure. We will discuss more about what we can do within OBIEE for performance optimization considering we have all other levers correctly placed.
OBIEE Reports creates a SQL query with the help of BI server and that is purely driven by how the data modelling is done is executed directly against the underlying database. A quick look at the SQL query getting generated can give us an idea whether best practices of OBIEE design are followed or not. By following the best practices in OBIEE design the SQL query generated can be made free of unnecessary clauses and nesting statements.
OBIEE itself has many out of box functionality for performance optimization such as usage of aggregate tables, using cache, changing the log levels and so on but are not enough to handle the performance issues.
The components involved in Performance Tuning are
· Weblogic Server
· BI Server
· Presentation Server
· Data Warehouse
With the help of monitoring tools like Enterprise Manager Metric Palette, Performance monitor, Server related statistics are collected and should be acted accordingly.
Would list some of the performance optimization techniques less known yet effective
· Try Tuning the Connection backlog buffering and Statement Cache on Oracle Weblogic server. Try adjusting the accept backlog value which might be set too low due to which connections are dropped or refused at the client.
· Oracle BI Server performance can be improved by prohibiting RPD updates. By doing this Oracle BI server is not needed to handle lock control.
· Various configuration options can be used to limit the maximum number of rows that can be downloaded, included in mail or processed.
· Limit the maximum number of rows that can be processed to render a table. This significantly improves performance as it reduces the system resources that will be consumed by user session.
· Providing Permission to objects by groups/roles.
· Union requests, consumes more memory as they generate more temp file , hence should be avoided.
· Load to BI resources can be reduced by avoiding usage of guided navigation
· Session variables use should be minimized.
· Dimensional Hierarchy should be modelled accurately so that Oracle BI optimizer can select the most economical source
· Content tab of logical table sources should be used to limit the number of rows returned from the database
· Exploiting aggregate tables, pre-calculated measures aggregated over a set of dimensional attributes are stored in aggregated tables
· Make NULL and NOT Null column in sync with RPD and Database to avoid full outer join with NVL
· Bitmap Index for all Foreign Key columns (for Summary reports) and Bitmap Join Index (lowest granularity based query for detailed data)
· Usage tracking should be switched off if not needed as it will avoid extra DB Operations that run against each query.
· Remove Snow flaking and Create Foreign keys for each dimension into Fact
I would like to emphasize that no single solution or configuration can take care of all performance issues. Other than listed above there are many more settings / ways that helps in performance optimization, my aim was to list some of them covering highlights. Performance optimization might target Database, Environment parameters, Data model, Repository Design or Report Design having the same objective. While performance cannot be optimized by applying certain set rules and standards, having faced different challenging environment and experience helps..
It's all about working around and coming up with the best solutions for the project understanding the project flows and business scenario's. To have an optimized performance application we need to follow the best practices and design standards.