Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
Docs Required, Release Notes Required
Description
Current implementation is based on StrippedThreadExecutor which has major downside: long-living task prevents others task from the same stripe from being executed. This means that the sql engine can be blocked by any query that will take a thread for a long time (most simple example is UDF invoking a Thread.sleep()).
Let's think about how we can improve this.
Every implementation of QueryTaskExecuter must meet following requirements:
- tasks with the same (queryId, fragmentId) can't be reordered
- tasks with the same (queryId, fragmentId) can't be executed in parallel: if T1 and T2 are tasks, submit_time(T1) < submit_time(T2), then end_time(T1) < start_time(T2)
- there must be 'happens-before' relation between execution of task with the same (queryId, fragmentId)
Attachments
Issue Links
- relates to
-
IGNITE-20808 Sql. Poor performance of INSERT
- Resolved