ClickHouse表列名的最大长度是多少?是否可以修改?
ClickHouse 表列名最大长度限制说明
默认限制值
ClickHouse 对所有标识符(包含列名、表名、数据库名、函数名等)的默认最大长度限制为 63 字节,注意此处统计单位是字节而非字符:如果使用多字节字符(比如中文)作为列名,可容纳的字符数量会对应减少,例如UTF-8编码的中文单字符占3字节,默认限制下最多可使用21个中文字符作为列名。
该默认值和 PostgreSQL 的默认列名长度限制完全一致,属于通用关系型数据库的常规标识符约束设计。
是否支持修改该限制?
支持修改,但没有运行时可动态调整的配置项,必须修改源码后重新编译部署。
具体修改操作
- 拉取你当前使用的 ClickHouse 版本对应的官方源码
- 打开源码路径下的
src/Common/Constant.h文件 - 找到常量
MAX_IDENTIFIER_LENGTH的定义,将默认的 63 调整为你需要的长度值(建议不要超过255,避免出现未知兼容性问题) - 按照官方编译流程完成 ClickHouse 二进制文件的编译
- 替换现有环境中的 ClickHouse 二进制文件,重启服务后新的长度限制即可生效
注意:修改长度限制后,你的 ClickHouse 集群节点如果存在不同长度限制的版本,会出现数据同步、DDL 执行等操作的兼容性问题,非特殊需求不建议修改默认值。
内容的提问来源于stack exchange,提问作者Abhinav Raj
相关产品推荐
相关产品推荐

