Как конвертировать винил в memtx в tarantool?

#tarantool

#tarantool

Вопрос:

Я создал таблицу в vinyl engine (диск), как я могу преобразовать ее в memtx engine (ram)?

У меня есть небольшая таблица, которая была бы лучше, если бы она была преобразована memtx для чего-то подобного:

 WITH x AS ( -- big table that wont fit in memory 
  SELECT cat_id, click_count FROM bla WHERE user_id = ?
), mx AS (
  SELECT MAX(click_count) max_click FROM x
)
SELECT IFNULL(x.click_count,0)/IFNULL((SELECT max_click FROM mx),1) 
  , listings.*
FROM listings -- a small table less than 100k records which better in memory
  LEFT JOIN x 
    ON listings.cat_id = x.cat_id
ORDER BY 1 DESC
LIMIT 10
 

но в настоящее listings время таблица — это vinyl таблица, как ее преобразовать memtx ?
пытался найти в документации, нет другого метода create , кроме box.space связанного с движком.

Если есть способ переименовать старую таблицу, создайте новое пространство с соответствующим движком, вставьте из старой таблицы, затем удалите старую таблицу.

Ответ №1:

Вы можете выполнить дамп / восстановление с помощью tarantool / dump

Или вы можете обойти все пространство и скопировать его строка за строкой

Или создайте реплику с измененным движком

Комментарии:

1. «Или создайте реплику с измененным движком». Я подозреваю, что это не очевидно, и необходима некоторая структура. Вы хотите установить триггер на _space?

2. Похоже, последний вариант частично описан здесь tarantool.io/en/doc/latest/reference/reference_lua/box_ctl /…