This section explains how you can use Resource Manager and Schema Quotas in Exasol to manage the workload and distribute the resources among the users.
By the use of resource manager, Exasol resources can be systematically distributed across users and roles. You can create consumer groups and allocate resources to them. You can set consumer groups to users or roles. When a user connects to Exasol, a session is assigned to the consumer groups set directly to the user or one of the user roles. The resource manager then allocates resources to the consumer groups and enforces resource limits by killing the violating queries or sessions when the limits are exceeded.
During the execution of a query, Exasol attempts to use as many resources (CPU, RAM, network, I/O) as possible by internal parallelization (multi-threading). However, since all execution steps can not be parallelized, the utilization of all hardware resources will be achieved only with multiple parallel queries. If more parallel queries are executed than the number of cores per server, Exasol's resource manager schedules the parallel queries to ensure a constant system performance.
By default, the sessions of all users or roles are assigned to the DEFAULT_CONSUMER_GROUP. If you want to influence the execution of many parallel queries, you can set consumer groups for different users or roles depending on the priority of the jobs. The CPU_WEIGHT attribute of the consumer group will then govern the amount of CPU processing time allocated to sessions within each consumer group. For more information, see Resource Manager.
To limit the data volume in your system or the volume for certain tenants, it's possible to use the concept of schema quotas. You can specify the maximum raw data size for a schema (the raw size of all contained data objects). By default, the raw data sizes for schemas are unlimited. You can define the limit through ALTER SCHEMA command. The corresponding raw data sizes for schemas are available in the system table EXA_ALL_OBJECT_SIZES (filter on
OBJECT_TYPE = 'SCHEMA'). The value NULL means unlimited. If the limit of a schema is exceeded, users will get an error message during the commit when trying to insert additional data.