Run-Time Logging Enhancements

SAP ASE 16.0 includes run-time logging enhancements.

Transferring log records to syslogs requires that SAP ASE acquire a log lock, which can become a point of contention in a busy OLTP system. SAP ASE reduces contention and improves run-time logging performance by using a user log cache for each transaction. The user log cache buffers log records before they are transferred to syslogs, and allows SAP ASE to send batches of log records to syslogs instead of individual log records.

To take full advantage of the user log cache, SAP ASE perferably transfers its log records to the log only once when the transaction completes. However, when concurrent open transactions make changes to the same data page in a busy OLTP system that uses datarow-locked tables, SAP ASE may need to transfer the log records from a user log cache to syslogs before the transaction completes, which decreases the amount of batching and increases contention on the log lock. In a busy OLTP system that is updating the same table with many concurrent transactions, the benefit of caching the log records in the user log cache may be entirely negated when SAP ASE frequently transfers the log records from the user log cache to the log before the transaction completes.

To reduce contention, SAP ASE version 16.0 and later partitions each user log cache into a number of smaller blocks, each the size of the server's logical page size. SAP ASE version 16.0 adds log records directly to the current active block within the user log cache (the same manner that earlier releases add log records directly to the user log cache). When concurrent open transactions make changes to the same data page, instead of moving log records directly from the user log cache to syslogs, SAP ASE adds (or links) the current block within the user log cache to the end of the global queue; it can later transfer the log records from the global queue to syslogs. This enables SAP ASE to efficiently batch additions to syslogs, improving the performance of run-time logging, regardless of issues associated with datarow-locked tables.

After the current block is added to the global queue, a new free block within the user log cache becomes the current block, and continues to accept log records from the transaction.

Use the user log cache queue size configuration parameter to enable and disable this functionality. When user log cache queue size is set to:

You must set user log cache size to be at least four times the size of the server’s logical page size if you configure SAP ASE to use the queuing strategy. That is, each user log cache must have at least 4 user log cache blocks (each block is the size of the logical page size). If the value is DEFAULT, SAP ASE version 16.0 sets the value to four times the size of the server’s logical page size

Keep the following in mind when setting the value for user log cache size and user log cache queue size: