[PATCH v2 0/7] Incorporate tuple comparison hints into Vinyl

Vladimir Davydov vdavydov.dev at gmail.com
Sat Apr 6 23:01:47 MSK 2019


The goal of this patch set is to build comparison hints into every
subsystem of the Vinyl engine. This is a prerequisite for multikey index
support as we are going to reuse comparison hints to store offsets of
indexed array entries. For conventional indexes, this should speed up
all tuple comparisons, similarly to how it was done in case of the memtx
tree index.

https://github.com/tarantool/tarantool/commits/dv/vy-hints

Changes in v2:
 - Rather than passing hint_t as a separate argument, which is error
   prone and bulky, introduce vy_entry struct storing a statement with
   its hint and pass it around by value, as suggested by Kostja.
 - Squash all patches adding comparison hints in one since with the new
   approach patching subsystems one by one would be too tedious.
 - Rename vy_cache_entry to vy_cache_node so as not to confuse it with
   vy_entry.
 - Factor out a few preparatory patches doing renames and moving pieces
   of code around.
 - Move hint_t from key_def.h to tuple_compare.h to reduce dependencies,
   as suggested by Kostja.
 - Drop (temporarily) patch killing un-hinted versions of comparators,
   because it isn't directly connected with this task and hence better
   be submitted separately.

v1: https://www.freelists.org/post/tarantool-patches/PATCH-0013-Incorporate-tuple-comparison-hints-into-Vinyl

Vladimir Davydov (7):
  Move hint_t definition to tuple_compare.h
  vinyl: rename vy_cache_entry to vy_cache_node
  vinyl: rename tree_mem_key to vy_mem_tree_key
  vinyl: zap vy_mem_iterator_curr_stmt helper
  vinyl: add wrapper around vy_tx_set
  vinyl: prepare for storing hints in vinyl data structures
  vinyl: incorporate tuple comparison hints into vinyl data structures

 src/box/key_def.h               |  39 ++--
 src/box/tuple_compare.cc        |  11 +
 src/box/tuple_compare.h         |  23 ++
 src/box/vinyl.c                 | 317 +++++++++++++++----------
 src/box/vy_cache.c              | 503 ++++++++++++++++++++--------------------
 src/box/vy_cache.h              |  58 ++---
 src/box/vy_entry.h              |  79 +++++++
 src/box/vy_history.c            |  42 ++--
 src/box/vy_history.h            |  25 +-
 src/box/vy_lsm.c                | 239 ++++++++++---------
 src/box/vy_lsm.h                |  17 +-
 src/box/vy_mem.c                | 221 +++++++++---------
 src/box/vy_mem.h                |  60 +++--
 src/box/vy_point_lookup.c       |  44 ++--
 src/box/vy_point_lookup.h       |   7 +-
 src/box/vy_range.c              |  75 +++---
 src/box/vy_range.h              |  14 +-
 src/box/vy_read_iterator.c      | 240 +++++++++----------
 src/box/vy_read_iterator.h      |  17 +-
 src/box/vy_read_set.c           |  32 +--
 src/box/vy_read_set.h           |  13 +-
 src/box/vy_run.c                | 396 ++++++++++++++++---------------
 src/box/vy_run.h                |  37 +--
 src/box/vy_scheduler.c          |  17 +-
 src/box/vy_stmt.h               | 113 +++++++++
 src/box/vy_stmt_stream.h        |   4 +-
 src/box/vy_tx.c                 | 255 ++++++++++----------
 src/box/vy_tx.h                 |  39 ++--
 src/box/vy_upsert.h             |  16 +-
 src/box/vy_write_iterator.c     | 280 +++++++++++-----------
 test/unit/vy_cache.c            |  19 +-
 test/unit/vy_iterators_helper.c |  93 ++++----
 test/unit/vy_iterators_helper.h |  14 +-
 test/unit/vy_mem.c              |  76 +++---
 test/unit/vy_point_lookup.c     |  33 +--
 test/unit/vy_write_iterator.c   |  15 +-
 test/vinyl/cache.result         |   6 +-
 test/vinyl/stat.result          |  26 +--
 38 files changed, 1950 insertions(+), 1565 deletions(-)
 create mode 100644 src/box/vy_entry.h

-- 
2.11.0




More information about the Tarantool-patches mailing list