使用 MariaDB 引擎 ColumnStore 的慢速 CREATE TABLE

Posted

技术标签:

【中文标题】使用 MariaDB 引擎 ColumnStore 的慢速 CREATE TABLE【英文标题】:Slow CREATE TABLE with MariaDB engine ColumnStore 【发布时间】:2020-04-18 19:08:15 【问题描述】:
    系统:Ubuntu 18 - SSD MariaDB 列存储版本:1.2.5 表格行数:3

对比一下InnoDB在ColumnStore前面的建表操作,InnoDB的运行速度比ColumnStore快X倍。

我已经使用引擎 ColumnStore 执行了一些带有 INSERT AS SELECT 的 CREATE TABLE。结果很慢。这是顺序:

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 TABLE 需要这么长时间。 注意 2:MariaDB 列存储现在有 CREATE AS SELECT operation。

鉴于此,这里有一些问题:

问题 1:我可以做一些 MariaDB ColumnStore 配置来使创建表操作然后从另一个表中插入数据更快吗? 问题 2:MariaDB ColumnStore 仅用于选择是否更快?

【问题讨论】:

为什么这很重要?您创建一个表一次,而不是频繁。 这听起来不像是您的代码有问题,所以我不知道您希望我们为您提供什么帮助。请参阅 mariadb.com/kb/en/mariadb-columnstore 获取 ColumnStore 论坛的链接和 MariaDB 的 Jira 系统以报告错误。 首先 maria 服务抓取代码,然后是列存储引擎,然后还有一个全部优化。坚果最耗时的是获得更快的选择和加入,您在创建/插入期间需要一些开销,另请参阅mariadb.com/kb/en/mariadb-columnstore-performance-concepts @Barmar 这对我的申请很重要。这是一个转换数据并在仪表板中显示其结果的工作流。有时,一个工作流程会多次返回 create table 【参考方案1】:

速度差异在意料之中。

根据时间,我怀疑数据集很小。

列存储旨在处理非常大的数据集,因此并未针对小数据集进行优化。

查看列存储的内部结构,您会发现每列都有一些大型结构、压缩和索引。此外,还有许多可能的压缩技术;它可能会仔细研究数据以决定每列使用哪一个。所有这些都是为了 SELECT 的性能,而以牺牲任何其他操作为代价。

您的 InnoDB 表没有索引,没有压缩,而且磁盘占用空间(尽管没有压缩)可能要少得多。 (使用更大的表,InnoDB 会更大。)

列存储有一个利基;为此使用它;不要指望它在所有领域都能与 InnoDB 竞争。

【讨论】:

以上是关于使用 MariaDB 引擎 ColumnStore 的慢速 CREATE TABLE的主要内容,如果未能解决你的问题,请参考以下文章

安装Mariadb columnStore(10.3版本)

MariaDB ColumnStore调研

MariaDB ColumnStore初探:安装使用及测试

MariaDB Community Server 10.5 Alpha 上的 MariaDB Columnstore 1.4

MariaDB ColumnStore一些限制和BUG总结

如何在 Kubernetes 中安装 MariaDB ColumnStore?