[PATCH v2 0/4] Reuse tuple formats for ephemeral spaces
Kirill Yukhin
kyukhin at tarantool.org
Thu Jan 24 15:48:44 MSK 2019
This patchset makes it possible to re-use tuple_format around
multiple ephemeral spaces. This is needed when many SQL requests
are served at the same time. In this case for almost each non-trivial
SELECT request ephemeral space is created with its own format.
Since removal of ephemeral spaces doesn't mean removal of format,
and formats count is limited, it is pretty much simple to run out of
formats.
This occurs on TPC-C benchmark, when number of clients > 32.
Issue https://github.com/tarantool/tarantool/issues/3924
Branch https://github.com/tarantool/tarantool/commits/kyukhin/gh-3924-reuse-eph-formats
Kirill Yukhin (4):
Pass necessary fields to tuple_format contructor
Set is_temporary flag for formats of ephemeral spaces
sql: set error type in case of ephemral space creation failure
Allow to reuse tuple_formats for ephemeral spaces
ChangeLog:
- Fixed all nits pointed
- Hashing of formats refactored: extracted into dedicated
routine()
- Moved initialization of hasher to tuple_init()
- Removed dead code from test.
src/box/blackhole.c | 7 +-
src/box/box.cc | 1 +
src/box/memtx_engine.c | 6 ++
src/box/memtx_space.c | 9 +-
src/box/space.c | 3 +-
src/box/space_def.c | 16 +++
src/box/space_def.h | 14 +++
src/box/sql.c | 6 +-
src/box/sql/vdbe.c | 4 +-
src/box/tuple.c | 13 ++-
src/box/tuple_format.c | 184 +++++++++++++++++++++++++++++---
src/box/tuple_format.h | 31 +++++-
src/box/vinyl.c | 12 ++-
src/box/vy_lsm.c | 10 +-
src/errinj.h | 2 +
test/box/errinj.result | 8 +-
test/sql/errinj.result | 36 +++++++
test/sql/errinj.test.lua | 13 +++
test/unit/tuple_bigref.c | 1 +
test/unit/vy_iterators_helper.c | 14 +--
test/unit/vy_mem.c | 5 +-
test/unit/vy_point_lookup.c | 5 +-
22 files changed, 342 insertions(+), 58 deletions(-)
--
2.19.1
More information about the Tarantool-patches
mailing list