...
Batch writing to data pages.
Find the most free page with enough space for data row in FreeList (if there is no such page - allocate new one) and fill it up to the end.
Improves average insertion time by reducing count of FreeList actions on each data row (insert/remove pages, locking and counters updates).
...
Improves the time of searching and inserting a range of keys.
Proposed plan
Overall changes to support batch updates in PageMemory can be divided into following phases.
Phase 1: Update new keys.
- Implement insertDataRows operation in FreeList: - insert several data rows at once.
- Implement invokeAll operation in BPlusTree: support searching and inserting range of keys.
- Enable batch insertion in preloader (enabled by a special system property).
Phase 2: Update existing keys.
- InvokeAll operation should support batch update of existing keys.
Phase 3:
...
DataStreamer support.
- Add support for batch updates in DataStreamer (isolated updater).
Phase 4:
...
putAll support.
- Add support for batch updates in IgniteCache . putAll.
Phase 5: MVCC support.
- Add support for MVCC (TRANSACTIONAL_SNAPSHOT) cache mode.
Risks and Assumptions
...