• ClickHouse和Elasticsearch压测对比,谁才是yyds?


    目录

    • 1 需求分析

    • 2 测试环境准备

    • 3 采集工具准备

    • 4 压测执行及结果分析

    1 需求分析

    1.1 分析压测对象

    1)什么是 ClickHouse 和 Elasticsearch

    ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为 « 矢量化查询执行 »,它有利于降低实际的数据处理开销。

    Elasticsearch 是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库 Apache Lucene。它可以被这样准确地形容:

    • 一个分布式的实时文档存储,每个字段可以被索引与搜索

    • 一个分布式实时分析搜索引擎

    • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

    2)为什么要对他们进行压测

    众所周知,ClickHouse 在基本场景表现非常优秀,性能优于 ES,但是我们实际的业务查询中有很多是复杂的业务查询场景,甚至是大数量的查询,所以为了在双十一业务峰值来到前,确保大促活动峰值业务稳定性,针对 ClickHouse 和 Elasticsearch 在我们实际业务场景中是否拥有优秀的抗压能力,通过这次性能压测,探测系统中的性能瓶颈点,进行针对性优化,从而提升系统性能。

    1.2 制定压测目标

    为什么会选择这个(queryOBBacklogData)接口呢?

    1)从复杂度来看,接口(queryOBBacklogData)查询了 5 次,代码如下:

    /**
     * 切ck-queryOBBacklogData
     * @param queryBO
     * @return
     */
    public OutboundBacklogRespBO queryOBBacklogDataCKNew(OutboundBacklogQueryBO queryBO) {
        log.info(" queryOBBacklogDataCK入参:{}", JSON.toJSONString(queryBO));
        // 公共条件-卡最近十天时间
        String commonStartTime = DateUtils.getTime(DateUtil.format(new Date(), DateUtil.FORMAT_DATE), DateUtils.ELEVEN_AM, 1, -10);
        String commonEndTime = DateUtils.getTime(DateUtil.format(new Date(), DateUtil.FORMAT_DATE), DateUtils.ELEVEN_AM, 1, 1);
        // 越库信息-待越库件数&待越库任务数
        WmsObCrossDockQueryBo wmsObCrossDockQueryBo = wmsObCrossDockQueryBoBuilder(queryBO,commonStartTime, commonEndTime);
        log.info("queryOBBacklogDataCK-wmsObCrossDockQueryBo: {}", JSON.toJSONString(wmsObCrossDockQueryBo));
        CompletableFuture preCrossDockInfoCF = CompletableFuture.supplyAsync(
                () -> wmsObCrossDockMapper.preCrossDockInfo(wmsObCrossDockQueryBo), executor);
        // 集合任务信息-待分配订单
        WmsObAssignOrderQueryBo wmsObAssignOrderQueryBo = wmsObAssignOrderQueryBoBuilder(queryBO, commonStartTime, commonEndTime);
        log.info("queryOBBacklogDataCK-wmsObAssignOrderQueryBo: {}", JSON.toJSONString(wmsObAssignOrderQueryBo));
        CompletableFuture preAssignOrderQty
  • 相关阅读:
    jasypt 配置文件加解密
    Spring Cloud Gateway快速入门(一)——网关简介
    【附源码】Python计算机毕业设计企业员工信息管理
    SWIFT中最常见的内存泄漏陷阱
    Linux系统奇事【free显示内存95%但是top却看不到谁用】
    【Python】-- 115道语法练习题
    MySQL常用语句整理
    《互联网大厂晋升指南》读书笔记-下
    【数据结构篇】堆
    wsl-系统迁移-非系统盘
  • 原文地址:https://blog.csdn.net/m0_73257876/article/details/126685636