Details
Description
Phase 1 from:
https://cwiki.apache.org/confluence/display/IGNITE/IEP-71%3A+Public+API+for+secondary+index+search
Some notes about implementation:
1. MergeSort reducer of index queries isn't part of this ticket. So this ticket should provide queries for operations: lt, gt, lte, gte, between. See IGNITE-14703.
2. There is no lock on Index in moment of querying. So concurrent operations on index can affect result of query. SQL also doesn't lock index.
3. QueryParallelism doesn't affects IndexQuery. IndexQuery reuse infrastructure of CacheQuery, and it doesn't use info about segments. It should be done in a separate ticket, providing parallelism by segments. Currently we initialize cursor over segments within same thread sequentially. Segments initialization is fast operation, so there is no much overhead.
4. By the same reason IndexQuery fetches index lazy. SQL fetches index when query is initialized, after that user iterates over prepared result. IndexQuery doesn't prepare result. In case of multiple segments, it will slow down IndexQuery while parallelism isn't implemented. From other side, it make result more sensitive for concurrent operations on an index.
After implementing query parallelism, we can will 3rd issue. 4th should be discussed after that, after some performance testing.
Attachments
Issue Links
- relates to
-
IGNITE-14703 Add merge-sort reducer for cache queries.
- Resolved
- links to