【技术预研】StarRocks官方文档浅析(4)
背景说明
基于starRocks官方文档,对其内容进行一定解析,方便大家理解和使用。
若无特殊标注,startRocks版本是3.2。
下面的章节和官方文档保持一致。
参考文档
产品简介 | StarRocks
StarRocks
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。
函数参考
函数相对比较丰富,可以在使用的时候进行查询。
或者自己定义udf函数。
Information Schema
数据库的元数据,用于查询创建表和视图等信息。
HTTP API
除jdbc连接数据库的方式,提供一种额外的查询功能,当前支持 SELECT、SHOW、EXPLAIN、KILL 语句。
AUTO_INCREMENT
自增列,用于唯一的全局自增id。理论上可以优化部分场景的查询。
生成列
就是提供一种在建表的时候,可以将一个字段输出多种格式的东西。
例如:要输出不同价格,一个输出“元”,一个输出“万元”。那么“万元”可以基于“元”进行计算获得。
有两个注意事项:一是,建议在建表的时候增加生成列,而不是在建表后新增或者修改,因为开销会增加很多。二是,会影响写入性能,因为要增加额外的计算。
预准备语句
SQL语句支持传入变量,这样减少在java端的拼接成本,因为节省了SQL语句解析的开销。
从安全的角度,防止 SQL 注入攻击。
系统变量
可以通过 SHOW VARIABLES [LIKE ‘xxx’]; 查看所有或指定的变量。例如:
-- 查看系统中所有变量。
SHOW VARIABLES;
-- 查看符合匹配规则的变量。
SHOW VARIABLES LIKE '%time_zone%';
相关变量的使用,建议需要的时候查询。
用户自定义变量
当前仅支持声明会话级别的自定义变量,即用户只能使用自己声明的自定义变量,且如客户端断开,那么当前会话中所有自定义变量将失效。
相当于提供java中的public。
错误码
报错信息对应表。本节描述查询请求常见的错误码。
错误码 | 错误信息 |
---|---|
1005 | 创建表格失败,并给出具体原因。 |
1007 | 不能创建同名的数据库。 |
1008 | 不能删除不存在的数据库。 |
1044 | 不能访问未授权的数据库。 |
1045 | 用户名及密码不匹配,不能访问系统。 |
1046 | 没有指定要查询的目标数据库。 |
1047 | 指定了无效的指令。 |
1049 | 指定了无效的数据库。 |
1050 | 已存在同名的数据表。 |
1051 | 指定了无效的数据表。 |
1052 | 指定的列名有歧义,不能唯一确定对应列。 |
1053 | 为 Semi-Join/Anti-Join 查询指定了非法的数据列。 |
1054 | 表中不存在指定的列。 |
1058 | 查询语句中选择的列数目与查询结果的列数目不一致。 |
1060 | 列名重复。 |
1064 | 无存活的 BE 节点。 |
1066 | 查询语句中出现重复的表别名。 |
1094 | 线程 ID 无效。 |
1095 | 非线程的拥有者不能终止线程的运行。 |
1096 | 查询语句没有指定要查询或操作的数据表。 |
1102 | 数据库名不正确。 |
1104 | 数据表名不正确。 |
1105 | 其它错误。 |
1110 | 子查询中指定了重复的列。 |
1111 | 在 Where 子句中非法使用聚合函数。 |
1113 | 新建表的列集合不能为空。 |
1115 | 使用了不支持的字符集。 |
1130 | 客户端使用了未被授权的 IP 地址来访问系统。 |
1132 | 没有权限修改用户密码。 |
1141 | 撤销用户权限时指定了用户不具备的权限条目。 |
1142 | 执行了未被授权的操作。 |
1166 | 数据列名字不正确。 |
1193 | 使用了无效的系统变量名字。 |
1203 | 使用的活跃连接数目超过了限制。 |
1211 | 不允许创建新用户。 |
1227 | 执行了越权操作。 |
1228 | 会话变量不能通过 SET GLOBAL 指令来修改。 |
1229 | 全局变量应通过 SET GLOBAL 指令来修改。 |
1230 | 相关的系统变量无缺省值。 |
1231 | 给某系统变量设置了无效值。 |
1232 | 给某系统变量设置了错误数据类型的值。 |
1248 | 没有给内联视图设置别名。 |
1251 | 客户端不支持服务器要求的用户认证协议。 |
1286 | 配置的存储引擎不正确。 |
1298 | 配置的时区不正确。 |
1347 | 对象与期望的类型不匹配。 |
1353 | 视图的 SELECT 子句中指定的列数目与其定义的列数目不相等。 |
1364 | 没有给不允许 NULL 值的列设置缺省值。 |
1372 | 密码长度不够。 |
1396 | 用户执行的某操作运行失败。 |
1471 | 指定的表不允许插入数据。 |
1507 | 删除不存在的分区,且没有指定如果存在才删除的条件。 |
1508 | 应该通过删除表的操作来删除所有分区。 |
1517 | 出现了重复的分区名。 |
1524 | 指定的插件尚未被加载。 |
1567 | 分区名不正确。 |
1621 | 指定的系统变量是只读的。 |
1735 | 表中不存在指定的分区名。 |
1748 | 不能向没有分区的表中插入数据。 |
1749 | 不存在指定的分区。 |
5000 | 指定的表不是 OLAP 表。 |
5001 | 指定的存储过程路径无效。 |
5002 | 应显示指定列名。 |
5003 | 维度列应排在指标列之前。 |
5004 | 表至少应包含1个维度列。 |
5005 | 集群 ID 无效。 |
5006 | 无效的查询规划提示。 |
5007 | 冲突的查询规划提示。 |
5008 | 数据插入提示仅适用于有分区的数据表。 |
5009 | PARTITION 子句不适用于向不分区的表插入数据。 |
5010 | 待创建表的列数目与 SELECT 子句中的列数目不相等。 |
5011 | 无法解析表引用。 |
5012 | 指定的值不是一个有效数字。 |
5013 | 不支持该时间单位。 |
5014 | 表状态不正常。 |
5015 | 分区状态不正常。 |
5016 | 分区上存在数据导入任务。 |
5017 | 指定列不是维度列。 |
5018 | 值的格式无效。 |
5019 | 数据副本与版本不匹配。 |
5021 | BE 节点已离线。 |
5022 | 非分区表的分区数不为1。 |
5023 | 修改表或数据的语句中没有指定任何操作。 |
5024 | 任务执行超时。 |
5025 | 数据插入操作失败。 |
5026 | 通过 SELECT 语句创建表时使用了不支持的数据类型。 |
5027 | 没有设置指定的参数。 |
5028 | 没有找到指定的集群。 |
5030 | 某用户没有访问集群的权限。 |
5031 | 没有指定参数或参数无效。 |
5032 | 没有指定集群实例数目。 |
5034 | 已存在同名的集群。 |
5035 | 集群实例数目配置错误。 |
5036 | 集群中 BE 节点不足。 |
5037 | 删除集群前应先删除所有数据库。 |
5037 | 集群中不存在指定 ID 的 BE 节点。 |
5040 | 不存在同名的集群。 |
5042 | 没有权限。 |
5043 | 实例数目应大于0。 |
5046 | 源集群不存在。 |
5047 | 目标集群不存在。 |
5048 | 源数据库不存在。 |
5049 | 目标数据库不存在。 |
5050 | 没有选择集群。 |
5051 | 应先将源数据库关联至目标数据库。 |
5052 | 集群内部错误:BE 节点信息错误。 |
5053 | 没有从源数据库到目标数据库的迁移任务。 |
5054 | 指定数据库已经被关联至目标数据库,或正在迁移数据。 |
5055 | 数据库关联或数据迁移不能在同一集群内执行。 |
5056 | 不能删除数据库:被关联至其它数据库或正在迁移数据。 |
5056 | 不能重命名数据库:被关联至其它数据库或正在迁移数据。 |
5056 | 集群中 BE 节点不足。 |
5056 | 集群内已存在指定数目的 BE 节点。 |
5059 | 集群中存在处于下线状态的 BE 节点。 |
5063 | 类型名不正确。 |
5064 | 通用错误提示。 |
5063 | Colocate 功能已被管理员禁用。 |
5063 | 不存在同名的 Colocate 数据表。 |
5063 | Colocate 表必须是 OLAP 表。 |
5063 | Colocate 表应该具有同样的副本数目。 |
5063 | Colocate 表应该具有同样的分桶数目。 |
5063 | Colocate 表的分区列数目应该一致。 |
5063 | Colocate 表的分区列的数据类型应该一致。 |
5064 | 指定表不是 Colocate 表。 |
5065 | 指定的操作无效。 |
5065 | 指定的时间单位非法,正确的单位包括:DAY、WEEK、MONTH。 |
5066 | 动态分区起始值应该小于0。 |
5066 | 动态分区起始值不是有效的数字。 |
5066 | 动态分区结束值应该大于0。 |
5066 | 动态分区结束值不是有效的数字。 |
5066 | 动态分区结束值为空。 |
5067 | 动态分区分桶数应该大于0。 |
5067 | 动态分区分桶值不是有效的数字。 |
5066 | 动态分区分桶值为空。 |
5068 | 是否允许动态分区的值不是有效的布尔值:true 或者 false。 |
5069 | 指定的动态分区名前缀非法。 |
5070 | 指定的操作被禁止了。 |
5071 | 动态分区副本数应该大于0。 |
5072 | 动态分区副本值不是有效的数字。 |
系统限制
涉及用户名和字段等限制,例如字段长度,或者用户名的长度。
AWS IAM 策略
暂时跳过。