Search CTRL + K

Database Query Performance Optimization

查询性能优化数据库 常见问题,是产品 POC(Proof of Concept) 中一定会有的环节(因为容易量化)。[1]

目标

发现查询性能问题

主要分为两类:

数据库

以 ClickHouse 举例,可以通过 EXPLAIN 语句分析执行计划、索引命中情况;可以通过系统表分析阶段耗时...

CPU Sampling

可以利用 perf

Off CPU Tracing

通常性能瓶颈并不在 CPU 上,而是 IO、网络、锁等问题上,这时就需要 Off CPU 分析,这种情况 Sampling 的性能工具往往没有效果,因此需要使用基于 Trace 的性能工具,比如 eBPF。

其他工具

Linux 针对不同模块问题都有对应工具进行分析,下图来自 reddit

20231013134039.kOaSfy

Optimizer Plan Test

SQL 是声明式查询语言,对于一个 SQL 的执行路径可能有成千上万条,优化器最终选择的 Plan 不一定是最优的,人也同样难以判断哪种最优:

  1. 执行计划太多
  2. 执行计划的性能和每个算子性能、集群规模、数据特点甚至硬件资源都有关系

此时,需要专门的优化器计划测试工具去枚举测试不同执行计划的性能。

优化查询性能

TODO


  1. https://blog.bcmeng.com/post/olap-performance-10.html ↩︎