Siebel Loyalty Administration Guide > Getting Started with Siebel Loyalty > Performance Optimization for Siebel Loyalty >

Optimizing Point Block Updates


For Assign Points actions, the points are associated with point blocks. A point block is a set of points assigned to the host company or a partner. Point blocks determine if a host company or partner can give reward points to members. Typically, there is one point block for the host and also one point block for each partner. In other words, the number of point block records is small.

This fact means that in a deployment that has multiple processes running on multiple servers, all threads that process transactions update one or a few records, slowing the performance and limiting the scalability of the Siebel Loyalty Engine.

Two system preferences are available to solve this issue and optimize performance. By default, these system preferences are not defined and do not take effect.

This optimization is available only for the batch mode components. It is not applicable to the real-time components.

NOTE:  Point blocks for the server process are automatically created by the batch processing engine when you optimize performance in order to minimize the number of updates to point blocks during Loyalty Batch Engine processing.

To optimize point block updates

  1. Navigate to the Administration - Application screen, System Preferences view.
  2. Enter a value for one or both of the two system preferences described in the following table.
    System Preference
    Description

    LOYPointBlockBatchSize

    If specified, then this value must be a number greater than 0. It indicates that the Siebel Loyalty Engine must batch the point block updates and apply it to the point block only after this many transactions have been processed.

    LOYPointBlockBatchPercent

    If specified, then this value must be a number greater than 0 and less than 100. As the available balance in the point block record becomes low, batching the updates can result in more points being assigned to members than are actually available. In order to prevent this problem, this value effectively turns off the batching for the point block records whose remaining balance is below the specified percentage value. For other point block records, it uses the batching mechanism.

Example of Optimizing Point Block Updates

Suppose 10,000 transactions are being processed, each generating 10 points, and there is a point block of 100,000 points.

If these system preferences are not specified, then the point block record updates 10,000 times, slowing performance.

As an example, suppose the Siebel Loyalty preferences are set to:

  • LOYPointBlockBatchSize set to 50
  • LOYPointBlockBatchPercent set to 2

For the first 9,800 transactions (100 minus 2 equals 98%), the Siebel Loyalty Engine batches the updates and only applies updates after every 50 transactions, resulting in 196 updates (9,800/50) instead of 9,800. This setting reduces the processing load for 98% of the transactions.

From the next transaction onwards the point block would have less than 2% remaining balance and so the batching would be disabled resulting in 200 updates.

The total number of updates done would be 396 (196 plus 200), as compared to 10,000 without these parameters. There might be contention during processing of the final 200 transactions, but it could happen for only 2% of the transactions.

After this point block has been used, the next point block has a 100% balance to start with and is used with the optimization until it reaches a less than 2% balance.

Server Process Termination and Recovery with Optimization

As the Siebel Loyalty Engine processes the batch of 50 transactions, it stores the information about the pending updates in the database in special system records (and not in memory). One system record is created for each point block by each server process as it uses the original point block record.

After every 50 transactions, the used amount from the Siebel Loyalty record is added to the parent record used amount and is reset to zero for the system record. This process is called point block synchronization. Synchronization is also done in the following conditions:

  • If the Siebel Loyalty Engine crashes or the server is brought down abruptly, then no information is lost. The next time the Siebel Loyalty Engine starts, the synchronization is done again.
  • If the Siebel Loyalty Engine is terminating normally, then the engine does the synchronization before exiting. So, all system point block records have used an amount of 0. (Note that these records are not visible in the user interface).
  • If the Siebel Loyalty Engine is running in a continuous mode (LOYEngineNumberOfRuns equals -1) and there are no more transactions to process and the Siebel Loyalty Engine is going to sleep.

Types of Point Blocks

There are the following types of point block:

The type of the promotion is visible in the Type field which is based on the BLCK_TYPE_CD column of the LOY Point Block business component.

Siebel Loyalty Administration Guide Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Legal Notices.