目录
文章介绍StarRocks在行业的最佳实践经验,包括部署、建模、导入、查询和监控五个模块。
一、部署
1.1 容量规划
【建议】参考StarRocks集群配置推荐做容量规划,具体参考:StarRocks集群配置推荐 - 经验教程 - StarRocks中文社区论坛
1.2 基础环境配置
【必须】参考检查环境配置,尤其关注 swap 关闭、overcommit 设置为1、ulimit 配置合理等。具体参考:检查环境配置 | StarRocks
1.3 机器配置
1.3.1 FE节点
- 【建议】 8C32GB;
- 【必须】数据盘>=200GB,建议 SSD;
1.3.2 BE节点
- 【建议】CPU:内存比,1:4,生产最小配置必须是 8C32GB+
- 【建议】单节点磁盘容量建议 10TB,数据盘建议最大单盘 2TB,建议 SSD 或者 NVME(如果是 HDD,建议吞吐>150MB/s,IOPS>500)
- 【建议】集群中节点同构(机器规格一样,避免木桶效应)
1.4 部署方案
- 【必须】生产环境必须最小集群规模3FE+3BE(建议FE和BE独立部署),如果混合部署,必须配置be.conf中的mem_limit 为减去其他服务后剩余内存量,例如机器内存40G,上面已经部署了FE,理论上限会用8G,那么配置下mem_limit=34G(40-8-2),2G作为系统预留。
- 【必须】生产必须FE高可用部署,1Leader+2Follower,如果需要提高读并发,可以扩容 Observer 节点。
- 【必须】生产必须使用负载均衡器连接集群进行读写,一般常用 Nginx、Haproxy、F5 等
二、建模
2.1 建表规范
- 仅支持UTF8编码;
- 不支持修改表中的列名;
- VARCHAR最大长度 1048576;
- KEY列不能使用FLOAT、DOUBLE 类型;
- 数据目录名,数据库名,表名,视图名,用户名,角色名大小写敏感,列名和分区名大小写不敏感;
- 主键模型中,主键长度不能超过128字节;
2.2 模型选择
- 如果想要保留明细,建议使用明细模型;
- 如果有明确主键,主键非空,写少读多,非主键列要利用索引,建议使用主键模型;
- 如果有明确主键,主键可能为空,写多读少,建议使用更新模型;
- 如果只想保留聚合数据,建议使用聚合模型;
2.3 排序列和前缀索引选择
duplicate key、aggregate key、unique key 中指定的列,StarRocks3.0 以前版本,主键模型中排序列通过 primary key 指定,StarRocks3.0 以后版本,主键模型中排序列通过 order by指定。
由于StarRocks底层数据是按照排序键排序后存储的,而前缀索引是在key (duplicate key、aggregate key、unique key、primary key)排序的基础上,实现的一种根据给定一定数量(不超过3列,不超过36个字节,遇到字符串会自动截断)前缀列,每间隔一定行数(1024),生成的一个索引项 (稀疏索引)。当查询的过滤条件命中前缀索引时,就能快速定位到数据存储所在的比较精确地址,在使用前缀索引时需注意:
- 经常作为查询条件的列,建议选为排序列,例如经常用user_id 过滤,where user_id=234,可以把 user_id 放在第一列;
- 排序列建议选择3-5列,过多会增大排序开销,降低导入效率;
- 前缀索引不超过36字节,不能超过3列,遇到 VARCHAR 会截断,前缀索引中不能包含 FLOAT 或 DOUBLE 类型的列;
因此可以结合实际业务查询场景,在确定Key列以及字段顺序时,要充分考虑前缀索引带来的优势。尽可能将经常需要查询的Key列字段,放置在前面,字段数据类型尽量选择date日期类型或者int等整数类型。
前缀索引的详细介绍见:
Doris存储层设计介绍1——存储结构设计解析(索引底层结构)_doris底层结构-CSDN博客
举例:
CREATE TABLE site_access
(
site_id BIGINT DEFAULT '10',
city_code INT,
site_name VARCHAR(50),
pv BIGINT DEFAULT


3278

被折叠的 条评论
为什么被折叠?



