查询常见问题
StarRocks 会缓存查询结果吗?
StarRocks 不直接缓存最终查询结果。从 2.5 版本开始,StarRocks 会将多阶段聚合查询的第一阶段聚合的中间结果缓存在 Query Cache 里,后续查询可以复用之前缓存的结果,加速计算。Query Cache 占用所在 BE 的内存。更多信息,参见 Query Cache。
当字段为NULL时,除了is null, 其他所有的计算结果都是false
标准 SQL 中 null 和其他表达式计算结果都是null。
StarRocks有decode函数吗?
StarRocks 不支持 Oracle 中的 decode 函数,StarRocks 语法兼容 MySQL,可以使用case when。
StarRocks的主键覆盖是立刻生效的吗?还是说要等后台慢慢合并数据?
StarRocks 的后台合并参考 Google 的 MESA 模型,有两层 compaction,会后台策略触发合并。如果没有合并完成,查询时会合并,但是读出来只会有一个最新的版本,不存在「导入后数据读不到最新版本」的情况。
StarRocks 存储 utf8mb4 的字符,会不会被截断或者乱码?
MySQL的 utf8mb4 是标准的 UTF-8,StarRocks 可以完全兼容。
[Schema change] alter table 时显示:table's state is not normal
ALTER TABLE 是异步操作,如果之前有 ALTER TABLE 操作还没完成,可以通过如下语句查看 ALTER 状态。
show tablet from lineitem where State="ALTER";
执行时间与数据量大小有关系,一般是分钟级别,建议 ALTER 过程中停止数据导入,导入会降低 ALTER 速度。