【问题标题】:Maximum number of table columns in ClickhouseClickhouse 中的最大表格列数
【发布时间】:2020-04-01 22:02:14
【问题描述】:

我尝试测试边界并注意到如果表中有 5K 列,即使我尝试仅插入 2 列值,我也会得到 从 127.0.0.1:9000 收到。 DB::Exception:超出内存限制(用于查询):将使用 9.31 GiB

有没有办法处理大量的指标?

单个表的列数实际限制是多少?

【问题讨论】:

    标签: olap clickhouse


    【解决方案1】:

    我认为没有限制(除了您的硬件限制)。尝试增加查询的最大内存使用量

    https://clickhouse.yandex/docs/en/operations/settings/query_complexity/#settings_max_memory_usage

    【讨论】:

      【解决方案2】:

      当您尝试插入任何行时,ClickHouse 为每列分配大约 1-2Mb,所以正确答案是肯定的,它没有严格的限制,但受您的 CPU、内存、与插入的并发客户端连接以及 *MergeTree 表引擎的限制按分区数(请参阅文档中的 PARTITION BY)

      【讨论】:

      • 谢谢。奇怪的是,当我有 5000 列并且我使用其中只有 2 个的插入语句,每个只有几个字节时,我仍然会被异常抛出。有没有办法解决这个问题?
      • 此表中的其他 4998 列是如何定义的?使用了哪种数据类型?使用了哪个默认值?
      • 4500 个字符串和 500 个 Int32 ,没有设置任何默认值
      • 你的意思是没有使用 Nullable 的 4500 字符串吗?所以,当你定义 field String 时,它的意思是 field String DEFAULT ''field Int32 意味着 field Int32 DEFAULT 0 我认为你只是尝试分配 2Mb* 5000 列,在这种情况下
      • 我还尝试了以下 CREATE TABLE 测试(lc0 Nullable(String) default NULL, lc1 Nullable(String) default NULL, lc2 Nullable(String) default NULL, lc3 Nullable(String) default NULL, . ... lc5000 ... } 然后运行 ​​'insert into test(lc1,pk) values('12','231') 并得到相同的结果
      猜你喜欢
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      相关资源
      最近更新 更多