Configuring query limits on result sets

You can configure query limits on the size of result sets to improve system performance, availability, and scalability.

When users perform queries that return very large result sets, there can be system performance and availability issues. To address these issues, HCL Compass lets you set hard and soft limits on the number of rows returned by queries. The hard limit is the maximum number of rows that can be retrieved in a result set for a user session. The soft limit is the query limit set for a user session that a Compass client can override. The soft limit cannot exceed the hard limit.

By limiting the number of rows retrieved, there is less load on the database server, less memory consumption in the Compass core, and faster data retrieval. The greatest benefits of setting query limits are realized in a Compass Web environment when applied to the CM Server where the Compass core resides. In this environment, performance and availability are critical.

You can get and set the hard and soft limits as master properties of a Compass database set by using the commands installutil getmasterproperty and installutil setmasterproperty, respectively. You can also set limits as behavior flags in the local environment where the Compass core runs. At run time, you can get the hard and soft query limits by using the API GetQueryLimit.

Setting the hard and soft limits as master properties affects all clients of the database set. In contrast, setting the query limits as behavior flags affects only the local environment.

For Compass Web, a benefit of using behavior flags is that the flags can be defined on a CM Server where the Compass core resides and they affect only the Compass Web clients. This allows the same users to function without these query limits when using local Compass clients (HCL Compass Client, and the HCL Compass Client for Windows™).

Administratively defining query limits as master properties of a Compass database set might not be appropriate for some Compass integrations because limits will hinder the ability of these products to function. Defining query limits as master properties also may not be appropriate for users who want to view and report on extremely large result sets. These users will benefit from locally defined behavior flags. By locally defining query limits, users can override the master property limits of the database set.