Essbase Optimization Techniques
by
Amit Sharma
http://learnobiee.blogspot.com
mail to [email protected]
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Essbase Optimization
The first step of Essbase optimization is to monitor Essbase
performance and identify performance bottleneck.
Viewing Essbase Server/Database Information
MaxL Display Application
ESSCMD GETAPPSTATE, GETPERFSTATS
ESSCMD GETAPPINFO,GETDBINFO
ListLocks, UNLOCKOBJECT
Monitoring User Sessions and Requests
MaxL display session, alter system
alter system logout session by user 'admin'
on application sample force;
Unlockobject 1 sample basic basic
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Database Cache Settings
Database Cache Settings describes database cache settings and lists the location of
the settings in Administration Services, MaxL, and ESSCMD.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Optimizing Database Caches
Analytic Services depends on caches for indexes, paging and calculating.
Inadequate cache settings can significantly impact database processes
Index Cache
alter database set index_cache_size
When you request a data block, the index is used to find its location on disk. If the block
location is not found in the index cache, the index page that has the block entry is pulled into
memory (into the index cache) from the disk. If the index cache is full, the least recently used
index page in memory (in the index cache) is dropped to make room for the new index page.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Optimizing Database Caches
Block Numbering
Index:
100-10, New York 11
100-20, New York 2
100-30, New York
33
100, New York 3
4
200-20, New York
5
200-30, New York 6
200-40, New York
7
200, New York
8
.
.
20
. 21
100-10, Massachusetts
22
100-20, Massachusetts
100-30, Massachusetts
http://learnobiee.blogspot.com
[email protected] for all Hyperion video tutorial/Training/Certification/Material
Optimizing Database Caches
Data Cache Data blocks can reside on physical disk and in RAM. The amount of
memory allocated for blocks is called the data cache.
alter database set data_cache_size
When a block is requested, the data cache is searched. If the block is found in the data cache, it
is accessed immediately. If the block is not found in the data cache, the index is searched for the
appropriate block number. The block's index entry is then used to retrieve the block from the proper
data file on disk.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Optimizing Database Caches
Calculator Cache The calculator cache is a buffer in memory that Essbase uses to create and
track data blocks during calculation operations. Essbase can create a bitmap,
whose size is controlled by the size of the calculator cache, to record and
track data blocks during a calculation. Determining which blocks exist using
the bitmap is faster than accessing the disk to obtain the information,
particularly if calculating a database for the first time or calculating a
database when the data is very sparse.
Dynamic calculator cache The dynamic calculator cache is a buffer in memory that
Essbase uses to store all of the blocks needed for a calculation
of a Dynamic Calc member in a dense dimension (for example,
for a query). Essbase uses a separate dynamic calculator cache
for each open database. The DYNCALCCACHEMAXSIZE
setting in the essbase.cfg file specifies the maximum size of
each dynamic calculator cache on the server.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Preventing or Removing Fragmentation
You can prevent and remove fragmentation:
•To prevent fragmentation, optimize data loads by sorting
load records based upon sparse dimension members.
•To remove fragmentation, perform an export of the
database, delete all data in the database with CLEARDATA,
and reload the export file.
•To remove fragmentation, force a dense restructure of the
database.
Types of Database Restructuring
This section describes the two ways that a database restructure is triggered:
Implicit Restructures
Explicit Restructures
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Hit Ratio – Percentage of searches that did not involve retrieving from disk
Percentage Of Maximum Blocks Existing - Is A Percentage Comparison
between existing blocks and potential blocks
Compression Ratio - Ratio of compressed block size to expanded block size
The average clustering ratio database statistic indicates the fragmentation level of the data (.pag) files. The
maximum value, 1, indicates no fragmentation
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Others Database Settings
Miscellaneous Database Settings describes miscellaneous database settings and lists
the location of the settings in Administration Services, MaxL, and ESSCMD.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 1: The Starting Line: Model Analysis
Minimize the number of dimensions. Do not ask for everything in one model
Minimize complexity of individual dimensions. Consider UDAs and Attribute Dimensions
in order to reduce the size of some of the dimensions
Examine the level of granularity in the dimensions.
Step 2: Order The Outline
Hourly Glass Model
Dense Largest Dense dimensions from largest to smallest. Small and large is measured
Smallest
simply by counting the number of Stored members in a dimension. The
effect of sparse dimension ordering is much greater than dense dimension
Sparse smallest ordering.
to Largest
Sparse dimensions from smallest to largest. This relates directly to how
the calculator cache functions.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 3: Evaluate Dense/Sparse Settings
Finding the optimal configuration for the Dense/sparse settings is the most
important step in tuning a database.
Optimize the block size. This varies per operating system, but in choosing the best
Dense/sparse configuration keep in mind that blocks over 100k tend to yield poorer
performance. In general, Analytic Services runs optimally with smaller block sizes
Step 4: System Tuning
System tuning is dependent on the type of hardware and operating
Keep memory size higher.
Ensure there is no conflict for resources with other applications
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 5: Cache Settings
The actual cache settings recommended is strongly dependent on your specific situation.
To measure the effectiveness of the cache settings, keep track of the time taken to do a
calculation and examine the hit ratio statistics in your database information.
Step 6: Optimize Data Loads
Know your database configuration settings (which dimensions are dense and
sparse).
Organize the data file so that it is sorted on sparse dimensions. The most effective
data load is one which makes the fewest passes on the database. Hence, by sorting
on sparse dimensions, you are loading a block fully before moving to the next one.
Load data locally on the server. If you are loading from a raw data file dump, make
sure the data file is on the server. If it is on the client, you may bottleneck on the
network
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 7: Optimize Retrievals
Increase the Retrieval Buffer size. This helps if retrievals are affected due to dynamic
calculations and attribute dimensions.
Increase the Retrieval Sort Buffer size if you are performing queries involving sorting or
ranking.
Smaller block sizes tend to give better retrieval performance. Logically, this makes sense
because it usually implies less I/O.
Smaller reports retrieve faster.
Attribute may impact the calculation performance which usually has a higher importance
from a performance standpoint.
If you have a lot of dynamic calculations or attribute dimensions
Higher Index cache settings may help performance since blocks are found quicker
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 8: Optimize Calculations
Unary calculations are the fastest. Try to put everything in the outline and perform a Calc
All when possible.
You should FIX on sparse dimensions, IF on dense dimensions. FIX statements on sparse
dimensions only brings into memory blocks with those sparse combinations which the calc
has focused on. If statements on dense dimensions operate on blocks as they are brought
into memory.
Use the Two Pass Calculation tag. Try to avoid multiple passes on the database. In the
case where the calculation is a CALC
Use Intelligent Calc in the case of simple calc scripts.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 9: Defragmentation
Fragmentation occurs over time as data blocks are updated. As the data blocks are updated,
they grow (assuming you are using compression) and the updated blocks are appended to
the page file. This tends to leave small free space gaps in the page file.
Time - The longer you run your database without clearing and reloading the more likely it
is that it has become fragmented.
Incremental Loads - This usually leads to lots of updates for blocks.
Many Calculations/Many Passes On The Database - Incremental calculations or
calculations that pass through the data blocks multiple times leads to fragmentation.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material
Ten Steps To Optimization
Step 10: Partition
By breaking up one large database into smaller pieces, calculation
performance may be optimized. Because this adds a significant layer of
complexity to administration, this is the last of the optimization steps we list.
However, this does not mean that has the least impact.
http://learnobiee.blogspot.com [email protected] for all Hyperion video tutorial/Training/Certification/Material