Asymmetric Query Processing

Previous versions of Kognitio had only two modes for running query plan steps: either globally or on a single ramstore. Every step in every query had to be run in one of these two ways.

In Version 8.2 onwards Kognitio is able to dynamically scale queries to run on sets of ramstores of differing size. The size of the set is based on estimates of the work to be performed and the amount of other work being run concurrently.

This dynamic scaling enables higher query throughput on systems which run a very large number (high tens or hundreds) of relatively short queries concurrently.

This feature improves performance for shorter queries over smaller subsets of data because starting and stopping very large numbers of parallel tiny tasks used to represent a significant load on Kognitio. Asymmetric Processing means this is no longer the case.

The formula Kognitio uses to size a query also takes into account the concurrent workload on the server at the time. With a very small number of queries running in parallel most query plan steps will run on all of the ramstores and only very small steps will be run on a reduced set of ramstores. As concurrency increases the ramstore sets being used will get smaller.

The asymmetric query processing feature is switched on by default. This corresponds to a value of 1 for the runtime parameter ai_auto_sym. Asymmetric processing can be switched off by setting ai_auto_asym to 0. This can be set in the config file or globally, per-user or per-session at runtime using:

SET PARAMETER ai_auto_sym to 0; -- for asymmetric processing off
SET PARMAETER ai_auto_sym to 1; -- for asymmetric processing on

See also: Location Hash Values