Description
Currently we move the whole ResultSet to memory when executing SQL query on mapper. If result set is large enough, this could easily bring server down due to high GC pressure or even OOME.
To avoid that we should stream H2's ResultSet to our own consumer, which will construct a page and send it to the client When a page is sent, consumer will block current thread until "next page request" is received. This approach has disadvantage - query thread will be blocked. However, implementation should be fairly easy and will allow us to avoid OOMEs on server. In future we will improve it to minimize blocking (or even avoid it completely).
Attachments
Issue Links
- blocks
-
IGNITE-6084 SQL: improve lazy execution threading model
- Closed
- is blocked by
-
IGNITE-6027 SQL: add "last" flag to GridQueryNextPageResponse
- Resolved
- is depended upon by
-
IGNITE-6117 JDBC2: Propagate "lazy" flag
- Resolved
-
IGNITE-6118 JDBC Thin: Propagate "lazy" flag
- Resolved
-
IGNITE-6119 ODBC: Propagate "lazy" flag
- Resolved
-
IGNITE-6121 .NET: Propagate SqlFieldsQuery.lazy property
- Resolved
-
IGNITE-6122 CPP: Propagate SqlFieldsQuery.lazy property
- Resolved
-
IGNITE-6120 Web Console: Propagate "lazy" flag on Query screen
- Closed
- is duplicated by
-
IGNITE-3481 Implement lazy query execution in H2.
- Closed
- relates to
-
IGNITE-6208 SQL: Add documentation for lazy query execution
- Closed
- links to