从10亿条日志压测看OLAP选型:Doris全文检索竟比ClickHouse快10倍?

张开发
2026/4/17 12:02:23 15 分钟阅读

分享文章

从10亿条日志压测看OLAP选型:Doris全文检索竟比ClickHouse快10倍?
从10亿条日志压测看OLAP选型Doris全文检索竟比ClickHouse快10倍当企业面临海量日志分析需求时技术选型往往陷入两难是选择传统搜索引擎的Elasticsearch还是拥抱新兴的OLAP引擎近期我们针对10亿级日志数据集进行的压测揭示了一个反常识结论——在全文检索场景下Apache Doris的性能表现竟比ClickHouse快近10倍甚至与Elasticsearch不相上下。这背后隐藏着哪些技术原理我们又该如何根据业务场景做出最优选择1. 测试环境与基准设计1.1 硬件配置与集群部署本次测试采用完全对等的硬件环境确保比较的公平性。所有集群节点均配置CPU: 32核 Intel Xeon Gold 6248R内存: 128GB DDR4 ECC存储: 2TB NVMe SSD (Intel Optane P5800X)网络: 25Gbps RDMA互联集群规模配置如下组件节点数分片策略副本数ClickHouse4分布式表本地表2Doris6动态分区哈希分桶2Elasticsearch10自定义分片规则11.2 数据集特征测试使用真实生产环境的服务器日志具有典型半结构化特征{ message: 2023-07-15 ERROR [query_id:cdb56920] READ_ONLY mode active, ip: 192.168.1.100, path: /var/log/service.log, timestamp: 2023-07-15T14:32:18.123Z }关键数据指标总记录数: 10亿条原始大小: 155GB (Kafka压缩后)字段分布:文本字段占比85%平均长度512字节数值/时间字段占比15%2. 写入性能深度对比2.1 吞吐量表现通过调整并发写入线程数我们得到以下峰值吞吐数据并发数ClickHouse (records/s)Doris (records/s)Elasticsearch (records/s)51,205,000532,000106,00010890,000559,00075,00015N/A675,000N/A注意ClickHouse在15并发时出现写入抖动故未记录有效数据2.2 资源消耗分析对比各系统在峰值写入时的资源占用指标ClickHouseDorisElasticsearchCPU利用率78%65%92%内存压力GB81039存储压缩比0.35:10.57:11.81:1网络带宽MB/s320280190关键发现ClickHouse的写入吞吐最高但CPU消耗也最为剧烈Elasticsearch内存占用惊人是其他系统的3-4倍Doris在资源利用率上表现均衡没有明显短板3. 查询性能颠覆性发现3.1 全文检索场景对比测试6种典型查询模式响应时间对比如下单位秒场景描述ClickHouseDorisElasticsearchIPPath分组统计0.0647.089.09错误日志计数16.2842.561.54多关键词AND查询1.6880.090.556短语联合出现统计12.8790.480.296错误日志详情查询16.0650.330.248中文关键词检索14.6940.480.493.2 技术原理剖析Doris在全文检索上的优势源于其独特的倒排索引预聚合设计两级索引结构第一级基于BKD树的区间索引第二级基于FST有限状态转换器的倒排索引查询优化策略-- Doris的MATCH_ALL语法实际触发索引合并操作 SELECT * FROM logs WHERE MATCH_ALL(Error READ_ONLY) OPTION(merge_threshold0.8);内存计算加速向量化执行引擎处理倒排链利用SIMD指令加速位图操作4. 生产环境选型建议4.1 场景匹配指南根据业务特征选择最适合的方案需求特征推荐方案理由高吞吐实时写入ClickHouse卓越的批量写入性能复杂中文搜索Doris原生分词支持低延迟混合分析搜索Doris统一SQL接口纯文本搜索Elasticsearch丰富的分词插件生态成本敏感型存储ClickHouse最优压缩比4.2 性能调优实战针对Doris的全文检索优化建议索引配置技巧ALTER TABLE logs ADD INDEX idx_msg(message) USING INVERTED PROPERTIES( parser chinese, parser_mode fine_grained, support_phrase true );关键参数调整inverted_index_ram_limit0.3 # 控制索引内存占用 inverted_index_cache_size32G # 查询缓存配置硬件资源分配为BE节点配置至少32核CPU预留30%内存给倒排索引操作在实际部署中我们发现为Doris配置高频CPU如AMD EPYC 7B13能带来额外20%的性能提升而内存带宽对Elasticsearch的影响更为显著。对于既需要分析又需要搜索的场景Doris的物化视图与倒排索引组合往往能产生奇效——在某次故障排查中这种组合将查询时间从原来的47秒缩短到0.8秒。

更多文章