GROUP BY
queries) to make sure that the server doesn't run out of memory.<numGroupsLimit>
groups per segment. This value is set to 100,000 by default and can be configured by the pinot.server.query.executor.num.groups.limit
property.numGroupsLimitReached
property will be set to true
in the query response if the value is reached.ORDER BY
clause used in the query.pinot.server.query.executor.min.segment.group.trim.size
property. max(<minSegmentGroupTrimSize>, 5 * LIMIT)
groups if it gets more groups. Pinot keeps at least 5 * LIMIT
groups when trimming tail groups to ensure the accuracy of results.max(<minServerGroupTrimSize>, 5 * LIMIT)
groups if it gets more groups.<minServerGroupTrimSize>
is set to 5,000 by default and can be adjusted by configuring the pinot.server.query.executor.min.server.group.trim.size
property. When setting the configuration to -1
, the cross segments trim can be disabled.<trimThreshold>
. pinot.server.query.executor.groupby.trim.threshold
property. LIMIT
of 10 if one isn't defined and this applies to GROUP BY
queries as well. Therefore, if no limit is specified, Pinot will return 10 groups.ORDER BY
clause to reduce the memory footprint and improve the query performance. It keeps at least 5 * LIMIT
groups so that the results give good enough approximation in most cases. The configurable min trim size can be used to increase the groups kept to improve the accuracy but has a larger extra memory footprint.HAVING
clause, it is applied on the merged GROUP BY
results that already have the tail groups trimmed. If the HAVING
clause is the opposite of the ORDER BY
order, groups matching the condition might already be trimmed and not returned. e.g.pinot.server.query.executor.num.groups.limit
The maximum number of groups allowed per segment.pinot.server.query.executor.min.segment.group.trim.size
The minimum number of groups to keep when trimming groups at the segment level.OPTION(minSegmentGroupTrimSize=<minSegmentGroupTrimSize>)
pinot.server.query.executor.min.server.group.trim.size
The minimum number of groups to keep when trimming groups at the server level.OPTION(minServerGroupTrimSize=<minServerGroupTrimSize>)
pinot.server.query.executor.groupby.trim.threshold
The number of groups to trigger the server level trim.pinot.server.query.executor.max.execution.threads
The maximum number of execution threads (parallelism of segment processing) used per query.OPTION(maxExecutionThreads=<maxExecutionThreads>)