From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladimir Davydov Subject: [PATCH 00/13] Incorporate tuple comparison hints into Vinyl Date: Tue, 2 Apr 2019 20:33:37 +0300 Message-Id: To: kostja.osipov@gmail.com Cc: tarantool-patches@freelists.org List-ID: 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. The patch set starts from base subsystems such as the memory level or page index, and then gradually pushes hints to upper levels. The final patch of the series isn't just about Vinyl - it removes un-hinted comparators altogether leaving only hinted versions (the caller is supposed to pass HINT_NONE if there's no hint). This seems reasonable, because by the time it is applied, all hot paths have been patched to use hinted comparators. Although the patches are quite bulky, they are pretty straightforward and unsophisticated - they just add hints to tuples where appropriate. https://github.com/tarantool/tarantool/commits/dv/vy-hints Vladimir Davydov (13): vinyl: store tuple comparison hints in memory tree vinyl: store tuple comparison hints in cache tree vinyl: store tuple comparison hints in tx write set vinyl: store tuple comparison hints in tx read set vinyl: store tuple comparison hints in range tree vinyl: store tuple comparison hints in page index vinyl: propagate tuple comparison hints to read iterator vinyl: propagate tuple comparison hints to write iterator vinyl: forward tuple comparison hints to memory tree vinyl: forward tuple comparison hints to cache tree vinyl: forward tuple comparison hints to read iterator vinyl: forward tuple comparison hints to tx read set Make tuple comparison hints mandatory src/box/key_def.c | 5 +- src/box/key_def.h | 80 +++---------- src/box/memtx_hash.c | 6 +- src/box/memtx_space.c | 4 +- src/box/memtx_tree.c | 27 ++--- src/box/space.c | 3 +- src/box/sql/analyze.c | 5 +- src/box/tuple_compare.cc | 179 +++++++---------------------- src/box/vinyl.c | 140 ++++++++++++++--------- src/box/vy_cache.c | 131 ++++++++++++--------- src/box/vy_cache.h | 52 ++++++--- src/box/vy_history.c | 9 +- src/box/vy_history.h | 15 ++- src/box/vy_lsm.c | 88 ++++++++++----- src/box/vy_lsm.h | 13 ++- src/box/vy_mem.c | 235 +++++++++++++++++++++----------------- src/box/vy_mem.h | 77 +++++++++---- src/box/vy_point_lookup.c | 71 ++++++------ src/box/vy_point_lookup.h | 6 +- src/box/vy_range.c | 42 ++++--- src/box/vy_range.h | 31 +++-- src/box/vy_read_iterator.c | 209 +++++++++++++++++++++------------- src/box/vy_read_iterator.h | 21 +++- src/box/vy_read_set.c | 19 ++-- src/box/vy_read_set.h | 10 +- src/box/vy_run.c | 244 ++++++++++++++++++++++++++-------------- src/box/vy_run.h | 28 +++-- src/box/vy_scheduler.c | 9 +- src/box/vy_stmt.h | 40 +++++-- src/box/vy_stmt_stream.h | 4 +- src/box/vy_tx.c | 122 ++++++++++++-------- src/box/vy_tx.h | 25 ++-- src/box/vy_upsert.c | 3 +- src/box/vy_write_iterator.c | 82 ++++++++++---- test/unit/vy_cache.c | 12 +- test/unit/vy_iterators_helper.c | 16 ++- test/unit/vy_mem.c | 35 +++--- test/unit/vy_point_lookup.c | 16 ++- test/unit/vy_write_iterator.c | 3 +- test/vinyl/cache.result | 6 +- test/vinyl/stat.result | 26 ++--- 41 files changed, 1263 insertions(+), 886 deletions(-) -- 2.11.0