Optimizing Oracle BI Discoverer Performance and Scalability 10-5
■
flattening Discoverer minimizes the use of inline views in the query SQL, which makes it
easier for the database to efficiently parse the SQL and select an optimal execution path. To enable flattening, set the value of the user preference SQLFlatten to 1.
For more information about:
■
the user preferences SQLItemTrim, SQLJoinTrim, SQLFlatten, see Section 9.6, List
of Discoverer user preferences
■
the join properties to choose to improve performance, see the Oracle Fusion Middleware Administrators Guide for Oracle Business Intelligence Discoverer
10.3.5 How to improve Discoverer performance by using Discoverer Administrator hints
To improve Discoverer performance, you can add hints to SQL statements for example, using a custom folder in Discoverer Administrator to force the database
optimizer to use a specific path. For more information, see Oracle Fusion Middleware Administrators Guide for Oracle Business Intelligence Discoverer.
10.3.6 How to improve Discoverer performance by setting the Case Storage item property appropriately
When a user adds a condition to a query, they can select the Match Case option. If the Match Case
option is cleared, Discoverer performs a case insensitive search by placing an Upper function around both sides of the condition. For example, a condition such
as: where Department in VIDEO SALES, VIDEO RENTALS
becomes: where UpperDepartment in UpperVIDEO SALES, UpperVIDEO RENTALS
However, using an UPPER function makes it impossible to use a database index and the performance benefits of using an index are therefore not available.
If you know that the data is stored in the database as all uppercase or all lowercase, you can manage this issue by using Discoverer Administrator to set the Case Storage
property of items.
For example, you might know that all the Region data is stored in uppercase in the database. In Discoverer Administrator, set the Case Storage property of the Region
item to Uppercase. Discoverer now assumes that the data is stored in uppercase and does not put the UPPER function on the left hand side of the condition that is, around
the column name. So the original condition:
where Department in VIDEO SALES, VIDEO RENTALS becomes:
where Department in UpperVIDEO SALES, UpperVIDEO RENTALS Because the UPPER function is not around the column name, the query uses whatever
database indexes are available.
10-6 Oracle Fusion Middleware Configuration Guide for Oracle Business Intelligence Discoverer
10.3.7 How to improve Discoverer performance by increasing the size of the array used to fetch rows from the database
If it is likely that Discoverer fetches large numbers of rows for example, in the order of thousands from the database, you can improve performance by increasing the size of
the array that Discoverer uses to fetch the rows.
To change the default size of the array, edit the pref.txt file and set MaxRowsPerFetch to the required value, as follows:
MaxRowsPerFetch = array size If you anticipate Discoverer retrieving thousands of rows, set MaxRowsPerFetch to 500
or 1000 to increase the size of the array.
Note : Discoverer end users can override the default value specified by
MaxRowsPerFetch in pref.txt as follows:
■
in Discoverer Plus, by choosing Tools | Options | Query Governor, and using the Retrieve data incrementally in groups of
field
■
in Discoverer Viewer, by selecting the Preferences link to display the Preferences page, and using the Retrieve data incrementally in groups of field
Notes
■
In the case of table worksheets, there is a trade-off between perceived performance and actual performance. Table worksheets display the data immediately after the
first array is retrieved. If MaxRowsPerFetch is set to 100, a Discoverer end user sees the first 100 rows more quickly than if MaxRowsPerFetch is set to 1000.
■
After editing the pref.txt file, you must run the applypreferences script to apply the preference changes you have made for more information, see
Section 9.4, How to set default user preferences for all users
. Then stop and restart the Oracle BI Discoverer service for more information, see
Section 4.3, How to start, stop, and restart the Discoverer preferences server component using opmnctl
.
10.3.8 How to improve Discoverer performance by basing lists of values on tables containing distinct values
By default, a Discoverer list of values LOV is populated using a SELECT DISTINCT statement in the query on the underlying data table. To populate the LOV, all of the
rows must be scanned before the list of distinct values can be displayed. However, this default query is inefficient if the LOV is populated from a column that has a large
number of rows but relatively few distinct values.
To improve performance, avoid creating LOVs on items based on columns in the fact table. Instead, consider the following options:
■
Create LOVs for items based on columns in small dimension tables containing only distinct allowable values attached to the fact table. If such tables do not exist,
create and populate them using SQLPLus.
■
If the list of allowable values is small or changes relatively infrequently, define the LOV within Discoverer Administrator by creating a custom folder based on SQL
statements that select the allowable values from SYS.DUAL.
For example, to create an LOV that contains all regions in the Video Stores data, you might:
1.
Create a custom folder to list all regions and based on the following SQL statement:
Optimizing Oracle BI Discoverer Performance and Scalability 10-7
Select NORTH Region FROM sys.dual UNION
Select SOUTH Region FROM sys.dual UNION
Select EAST Region FROM sys.dual UNION
Select WEST Region FROM sys.dual
2.
Edit the item class for the Region item so that it uses the above custom folder for its list of values.
For more information about how to create custom folders and item classes, see Oracle Fusion Middleware Administrators Guide for Oracle Business Intelligence
Discoverer.
10.3.9 How to improve Discoverer performance by changing cache settings for your system