IBM Support

SaveDataAll Best Practices

Product Documentation


Abstract

This technote describes the best practices for using the SaveDataAll TurboIntegrator function.

Content

The SaveDataAll TI function does the following:
 
  • Writes cube data and feeders from TM1 Server memory to files on disk.  Cube data is stored in .cub files in the TM1 Server data directory so that it can be read back into memory when the TM1 Server is restarted.  When any input cell in a cube is updated, that cube is marked as dirty.  Only cubes that are marked as dirty are written to disk during the SaveDataAll.  
  • Restarts the TM1 Servers transaction file (tm1s.log).   The current tm1s.log file is renamed to include the current timestamp and a new empty tm1s.log file is created.
The amount of time it takes the SaveDataAll to complete depends on the size of the transaction log file and the volume of cube data that needs to be written to disk.   To reduce the amount of time it takes to complete a SaveDataAll, the following options should be considered.
  1. Use the CubeSaveData TI function at the end of TI processes that update cube data.  CubeSaveData saves all data for a specific cube from memory to disk and marks the cube as clean.  Unlike the SaveDataAll TI function, the CubeSaveData TI function can be run in parallel in separate TI processes.  This might reduce the overall time it takes a subsequent SaveDataAll to write cube data from server memory to disk.  
  2. Disable transaction logging on TI processes that load large volumes of cube data.  Transaction logging can be enabled and disabled with the CubeSetLogChanges TI function.  The TM1 Server transaction log acts as both an audit mechanism for changes to input cells as well as a means to recover cube changes not yet saved to disk (with a SaveDataAll or CubeSaveData) in the event of a failure.  Transaction logging is typically only recommended to be enabled on cubes where users manually input data and those changes need to be audited and protected against data loss.
  3. Run SaveDataAll when other TI processes are not executing and user activity is minimal. 
  4. Serialize TI processes, including the TI process with the SaveDataAll, by using the Synchronized TI function in all processes that must be serialized.
  5. Reduce the chance of lock contention. The TI process with the SaveDataAll function should not include TI functions that modify metadata and must be scheduled in a chore that does not include other TI processes. 
  6. Check for lock contention using lock exception debug logging. TI processes with the SaveDataAll TI function are susceptible to lock contention like all other TI processes.   If a SaveDataAll is running slower than expected, you can enable lock exception debug logging for SaveDataAll  by adding the following lines to the tm1s.log-properties file. These settings will write the lock exception debug logging to a lock.log file in the TM1 Server logging directory.
log4j.logger.TM1.Login=DEBUG, LOCK
log4j.additivity.TM1.Login=false
log4j.logger.TM1.Lock.Exception=DEBUG, LOCK
log4j.additivity.TM1.Lock.Exception=false
log4j.logger.TM1.SaveDataAll=DEBUG, LOCK
log4j.additivity.TM1.SaveDataAll=false
log4j.appender.LOCK=org.apache.log4j.SharedMemoryAppender
log4j.appender.LOCK.File=lock.log
log4j.appender.LOCK.MaxFileSize=100 MB
log4j.appender.LOCK.MaxBackupIndex=20
log4j.appender.LOCK.TimeZone=Local

Document Location

Worldwide

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSD29G","label":"IBM Planning Analytics"},"Component":"TM1 Server","Platform":[{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
27 September 2019

UID

ibm11075281