1.OLAP工具。
2.适合大宽表,读大量行但是少量列,结果集小。
3.不更新或少更新(延迟高、代价大)。
可以考虑用insert替代update,用VersionedCollapsingMergeTree。
4.避免热点、数据倾斜,对写入数据预处理,将数据均匀分散到各shard的各块盘。
5.集群限流方案:
- 并发高导致集群瘫痪
- 大查询导致集群瘫痪(包括:查询请求不合理导致集群负载过高,扫描数据量过大,join使用不规范等)
避免对集群安全性造成影响,需要提前做预判。
6.集群统一调度方案:队列有优先级控制,ad-hoc查询优先级高,同步查询,大部分查询对于使用者来说感觉不到异步。
7.对于数据量大,任务重的需求,尽可能提升硬盘IO(包括增加块数以及单盘read性能)、CPU(增加core数量)、内存。
8.根据字段的数量、字段的大小、查询任务的复杂度以及业务要求的时效性去评估单shard单盘的数据量。
9.热点数据单独部署集群,避免多个业务需求互相影响。
10.尽量少做大查询任务,避免对其他同步任务的时效性造成影响。当同时做多个大查询任务,并发会很低,前面任务占用机器硬件资源导致后来任务长时间处于等待状态。
11.大查询、小查询的任务不建议在同一个集群,大查询会严重拖慢小查询的任务,对小查询的时效性有很大的影响,建议分开部署到不同的集群上