With users unceasingly (almost perennially) demanding higher data upload speed and concurrent transfers, this blog offers insight and considerations one should keep in mind while simultaneously executing a Turbo Integrator (TI) process. It also highlights steps to avoid TI looping and/or thrashing.
Synopsys
Consider a single user loading data into a cube from source (such as ODBC, Text files, another Cube, etc.) via a TI process for a specific data segment such as a given scenario, period & component, may not experience any wait times. However, when it comes to concurrent users simultaneously executing a TI, there will be circumstances when they will experience delays; this, as their commands will be placed on locks. It occurs as a result of declaring static view/subset names in the TI process that perform write operation into a cube, updating the same view, blocking the concurrent write activity.
Analysis
As the concurrent execution of a TI is processed, the Write activity put on lock mode (by another Write command which is being executed) keeps the process on wait until the operation finishes and then re-initiates it for itself. This repeated attempts to execute the process puts a lock on destination cube and successive rollbacks result in a thrash. This, as the concurrent execution adversely effects server utilization and TI processing times.
Solution
Parallel Interaction: Concurrent read and write operation on a cube can be achieved using Parallel Interaction. A Parallel interaction allows multiple writes & reads from many users, synchronously. It is most useful in situations where business urgency demand multiple data uploads using a single TI process or scenarios where cubes are required to process simultaneous read and write operations.
Tip: To improve concurrent user activity while executing a TI and in the event where concurrent cube data access is put on wait mode, make sure you declare views and subsets with unique names.
For this, include client name or number, time stamp and random number(s).
Example:
sUser = TM1User ();
nClient = DIMIX ( '}Clients', sUser);
If (nClient = 0);
nClient = Int (RAND ()) ;
EndIf;
sClientNumber = NumberToString(nClient);
sPrefix = 'TI';
sProcessName = GetProcessName();
sViewName = sPrefix | sProcessName | sClientNumber;
sSubsetName = sViewName;
If however the TI process is also executing meta data updates, include TI function “Synchronized()” to invoke serial execution of TI processes that update TM1 dimension(s). This will potentially avoid a thrash.
Syntax: synchronized(string); synchronized() takes a single parameter that is the lock object name.
For more Information: To check on your existing Planning Analytics (TM1) entitlements and understand “how to”, reach out to us at info@octanesolutions.com.au for further assistance.
Get a free one-hour consultation on us.
Octane Software Solutions Pty Ltd is an IBM Registered Business Partner specializing in Corporate Performance Management and Business Intelligence. We provide our clients advice on best practices and help scale up applications to optimise their return on investment. Our key services include Consulting, Delivery, Support and Training.
Octane has its head office in Sydney, Australia as well as offices in Canberra, Bangalore, Gurgaon, Mumbai, and Hyderabad.
To know more about us visit, OctaneSoftwareSolutions.
Leave a comment