Optimize Data with Hash-Based Active Lists

A hash-based active list uses a hash function to map a set of data to a single number (a hash value).

To create a hash-based active list:

See List Authoring.

The main advantage of using the hash-based active list by enabling the list’s Optimize Data option is to reduce memory usage. Instead of storing the complete active list entry in memory, only the hash code (a number), count, and last modified time are stored. The complete entry is available in the database. Therefore, the size of each entry in memory is constant, regardless of the number of fields and corresponding data types in the active list schema.

In terms of performance, there is little or no difference between hash-based and regular active lists.

The Optimize Data option is useful for active lists that contains a large number of entries (for example, more than 100,000 entries) or a large amount of information per entry.

Note: There is a possibility of getting an inaccurate result from an active list that uses the Optimize Data option due to hash collisions. When two active list entries map to the same hash code, the result of the InActiveList condition can be inaccurate in some cases. However, the chances of two entries evaluating to same hash code are quite rare. In the current scheme, for an active list with 1 million entries, the chances of hash code contention are about 1 in 4,000,000.

You can switch active Lists between optimized (hashing) and non-optimized (non-hashing) after they are created.