ClickHouse查询优化详细介绍

2024-09-02 16:37:48 7
  • 收藏
  • 管理
    作者:oliverdding,腾讯CSIG测试开发工程师你想要的ClickHouse优化,都在这里。ClickHouse是OLAP(Onlineanalyticalprocessing)数据库,以速度见长[1]。ClickHouse为什么能这么快?有两点原因[2]:架构优越列式存储索引数据压缩向量化执行资源利用关注底层细节但是,数据库设计再优越也拯救不了错误的使用方式,本文以MergeTree引擎家族为例讲解如何对查询优化。ClickHouse查询执行过程⚠️本节基于ClickHouse22.3版本分析clickhouser-server启动后会在while循环中等待请求,接收到查询后会调用executeQueryImpl()行数构建AST、优化并生成执行计划pipeline,最后在executeImpl()中多线程执行DAG获取结果,这篇文章只关心SQL执行,省略掉网络交互部分,查询执行流程如下图所示:SQL的解析优化和编译原理息息相关,本节将包含大量编译原理和代码细节,属扩展知识。词法解析和语法解析ClickHouse拿到需要执行的SQL,首先需要将String格式的字符串解析为它能理解的数据结构,也就是AST和执行计划。构造AST部分代码如下所示:// src/Interpreters/executeQuery.cppstatic std::tuple
    上一页:Cocos小白的性能优化探索 下一页:Chromium内核Layout模块学习
    全部评论(0)