如果您比较InnoDB在ColumnStore前面执行的create操作,InnoDB的运行速度是ColumnStore的X倍。
我已经用INSERT作为SELECT使用引擎ColumnStore执行了一些CREATE。结果非常缓慢。以下是顺序:
DROP table IF EXISTS example;
CREATE TABLE IF NOT EXISTS example
(num INT(11),meta DECIMAL(14,4),min INT(11),max INT(11))
ENGINE=columnstore;
INSERT INTO example
(num, meta, min, max)
AS SELECT num, meta, min, max FROM old_example;
-- TIME TO EXECUTE
-- On row affected, taking 2.8s现在,看看我是如何处理InnoDB的
DROP table IF EXISTS example;
CREATE TABLE IF NOT EXISTS example
(num INT(11),meta DECIMAL(14,4),min INT(11),max INT(11))
(SELECT num, meta, min, max FROM old_example);
-- TIME TO EXECUTE
-- On row affected, taking 103ms注意1:我确实知道,在第一次操作中,我做了一个不同的操作,但是我跟踪了每个分离的查询,我发现使用ENGINE=ColumnStore的CREATE所用的时间太长了。注意到2:MariaDB专栏商店现在有创建作为选择操作了。
有鉴于此,以下是一些问题:
问题1:是否有一些MariaDB ColumnStore配置可以使创建表操作成为可能,然后更快地从另一个表插入数据?问题2,:MariaDB ColumnStore是否更快?
发布于 2020-04-26 22:57:52
速度差异是预料之中的。
根据时间,我怀疑数据集很小。
Columnstore是为处理非常大的数据集而设计的,因此没有针对微小集进行优化。
查看Columnstore的内部结构,您将发现每个列的一些大型结构、压缩和索引。此外,还有许多可能的压缩技术;它可能仔细研究数据,以决定为每一列使用哪一种。所有这些都是以牺牲任何其他操作为代价的选择的性能。
您的InnoDB表没有索引,没有压缩,而且磁盘内存虽然没有压缩,但可能要少得多。(有了更大的表,InnoDB就会更大。)
Columnstore有一个利基;为此使用它;不要期望它在所有领域都比InnoDB具有竞争力。
https://stackoverflow.com/questions/61294768
复制相似问题