系统限制
本文介绍使用 StarRocks 系统时需要注意的事项。
-
StarRocks 采用 MySQL 协议进行通信,用户可通过 MySQL Client 或者 JDBC 连接到 StarRocks 集群。选择 MySQL Client 版本时建议采用 5.1 及之后的版本,5.1 之前版本不支持长度超过 16 个字符的用户名。
-
对名称的要求,包括数据目录名 (catalog)、数据库名、表名、视图名、异步物化视图名、分区名、列名、索引名、用户名、角色名、仓库名 (repository)、资源名 (resource)、存储卷名 (Storage Volume)、Pipe 名等:
- 只能由数字 (0-9)、字母 (a-z或A-Z),以及下划线 (
_) 组成。用户名 (username) 可以使用纯数字命名。 - 可以以字母或下划线开头。
- 长度不能超过 64 个字符。几个特殊情况:
- 数据库名不能超过 256 个字符。
- 表名和列名不能超过 1024 个字符。
- 用户名 (username) 不能超过 128 个字符。
- 列名(包括列别名)、分区名、索引名大小写不敏感,其他名称大小写敏感。
- 只能由数字 (0-9)、字母 (a-z或A-Z),以及下划线 (
-
FE 配置项
enable_table_name_case_insensitive(自 v4.0 版本起支持)用于控制 Catalog 名称、数据库名称、表名称、视图名称以及异步物化视图名称是否不区分大小写。此功能默认关闭(即上述名称默认区分大小写),且只能在创建集群时启用。warning除非您有明确且充分理解的理由,否则我们强烈建议您保持此功能关闭。
启用后,StarRocks 会将上述名称以小写形式存储,并在查询和写入(DDL/DML)处理阶段强制将所有 Catalog、数据库、表、视图和物化视图名称转换为小写。这会带来以下影响:
- 可能导致外表和 External Catalog 大面积不可用。 不同的 External Catalog 服务遵循各自不同的命名及大小写约定。如果某个外部 Schema、数据库或表的名称本身并非全小写,StarRocks 会在将 SQL 中的名称传递给 Connector 之前将其转换为小写,从而在数据源中查找一个并不存在的名称,导致查询因 "not found" 错误而失败。
- 集群创建后无法修改。 集群启动后,此配置项的值无法通过任何方式修改。任何修改尝试均会导致错误;当 FE 检测到此配置项的值与集群首次启动时不一致时,FE 将无法启动。
仅当您能够确保所有对象名称(包括您计划访问的每一个外部数据源中的名称)均已为小写时,才在新建集群上启用此功能。
-
对标签(Label)名的要求: 导入数据时可指定任务的标签(Label)。标签名可由数字 (0-9)、字母(a-z或A-Z),以及下划线(
_)组成,且长度不能超过 128 个字符。标签名以字母或下划线开头。 -
建表时,Key 列不能使用 FLOAT 或者 DOUBLE 类型,可用 DECIMAL 类型表示小数。
-
VARCHAR 最大长度:
- 对于 StarRocks 2.1 之前的版本,长度范围为 1~65533 字节。
- 【公测中】自 StarRocks 2.1 版本开始,长度范围为 1~1048576 字节。1048578(行最大值)- 2(长度标识位,记录实际数据长度)= 1048576。
-
StarRocks 仅支持 UTF8 编码,不支持 GBK 等编码。
-
建表后,表类型不支持修改(比如不能将已有的明细表修改为主键表)。如果需要修改表类型,请重新建表。
-
一个查询中子查询的最大个数默认为 10000,可以通过 FE 参数
expr_children_limit设置。