问题描述
我在 vinyl
引擎(磁盘)中创建了一个表,如何将其转换为 memtx
引擎(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
中转换?
试图在 documentation 中找到,除了 create
中与引擎相关的 Box.space
之外没有其他方法。
如果有办法重命名旧表,请使用适当的引擎创建一个新空间,从旧表插入,然后删除旧表。
解决方法
您可以使用 tarantool/dump 进行转储/恢复
或者你可以走遍整个空间并逐行复制
或者创建一个改变引擎的副本