Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...