Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladimir Davydov <vdavydov.dev@gmail.com>
To: kostja.osipov@gmail.com
Cc: tarantool-patches@freelists.org
Subject: [PATCH 00/13] Incorporate tuple comparison hints into Vinyl
Date: Tue,  2 Apr 2019 20:33:37 +0300	[thread overview]
Message-ID: <cover.1554225074.git.vdavydov.dev@gmail.com> (raw)

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

             reply	other threads:[~2019-04-02 17:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-02 17:33 Vladimir Davydov [this message]
2019-04-02 17:33 ` [PATCH 01/13] vinyl: store tuple comparison hints in memory tree Vladimir Davydov
2019-04-04  8:53   ` Konstantin Osipov
2019-04-04  9:09     ` Vladimir Davydov
2019-04-04  9:48       ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 02/13] vinyl: store tuple comparison hints in cache tree Vladimir Davydov
2019-04-04 11:39   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 03/13] vinyl: store tuple comparison hints in tx write set Vladimir Davydov
2019-04-04 11:41   ` Konstantin Osipov
2019-04-04 12:21     ` Vladimir Davydov
2019-04-04 12:40       ` Konstantin Osipov
2019-04-04 17:28         ` Vladimir Davydov
2019-04-02 17:33 ` [PATCH 04/13] vinyl: store tuple comparison hints in tx read set Vladimir Davydov
2019-04-04 11:42   ` Konstantin Osipov
2019-04-04 12:08     ` Vladimir Davydov
2019-04-02 17:33 ` [PATCH 05/13] vinyl: store tuple comparison hints in range tree Vladimir Davydov
2019-04-02 17:33 ` [PATCH 06/13] vinyl: store tuple comparison hints in page index Vladimir Davydov
2019-04-02 17:33 ` [PATCH 07/13] vinyl: propagate tuple comparison hints to read iterator Vladimir Davydov
2019-04-04 11:43   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 08/13] vinyl: propagate tuple comparison hints to write iterator Vladimir Davydov
2019-04-04 11:47   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 09/13] vinyl: forward tuple comparison hints to memory tree Vladimir Davydov
2019-04-04 12:10   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 10/13] vinyl: forward tuple comparison hints to cache tree Vladimir Davydov
2019-04-04 12:11   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 11/13] vinyl: forward tuple comparison hints to read iterator Vladimir Davydov
2019-04-04 12:12   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 12/13] vinyl: forward tuple comparison hints to tx read set Vladimir Davydov
2019-04-04 12:12   ` Konstantin Osipov
2019-04-02 17:33 ` [PATCH 13/13] Make tuple comparison hints mandatory Vladimir Davydov
2019-04-04 12:21   ` Konstantin Osipov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1554225074.git.vdavydov.dev@gmail.com \
    --to=vdavydov.dev@gmail.com \
    --cc=kostja.osipov@gmail.com \
    --cc=tarantool-patches@freelists.org \
    --subject='Re: [PATCH 00/13] Incorporate tuple comparison hints into Vinyl' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox