性能和优化
本节包含了提高 ClickHouse 性能的技巧和最佳实践。 我们建议用户在阅读本节之前先阅读 核心概念, 该部分涵盖了改善性能所需的主要概念。
主题 | 描述 |
---|---|
查询优化指南 | 这是查询优化的良好起点,这个简单的指南描述了使用不同性能和优化技术改善查询性能的常见场景。 |
主索引高级指南 | 深入探讨 ClickHouse 索引,包括它与其他数据库系统的不同之处,ClickHouse 如何构建和使用表的稀疏主索引以及在 ClickHouse 中进行索引时的一些最佳实践。 |
查询并行性 | 解释了 ClickHouse 如何使用处理通道和 max_threads 设置并行执行查询。 涉及数据如何在通道之间分配,max_threads 如何应用,何时未被完全使用,以及如何使用 EXPLAIN 和跟踪日志检查执行。 |
分区键 | 深入探讨 ClickHouse 的分区键优化。 解释了选择合适的分区键如何显著提高查询性能,因其允许 ClickHouse 快速定位相关数据片段。 涵盖选择高效分区键的最佳实践和可能避免的陷阱。 |
数据跳过索引 | 解释了数据跳过索引作为优化性能的一种方式。 |
PREWHERE 优化 | 解释了 PREWHERE 如何通过避免读取不必要的列数据来减少 I/O。 显示如何自动应用它,如何选择过滤顺序,以及如何使用 EXPLAIN 和日志进行监控。 |
批量插入 | 解释了在 ClickHouse 中使用批量插入的好处。 |
异步插入 | 重点介绍了 ClickHouse 的异步插入功能。 可能解释了异步插入如何工作(在服务器上批量处理数据以实现高效插入)及其好处(通过卸载插入处理来提高性能)。 还可能涵盖如何启用异步插入以及在 ClickHouse 环境中有效使用它们的注意事项。 |
避免变更 | 讨论了在 ClickHouse 中避免变更(更新和删除)的重要性。 推荐使用仅追加插入以获得最佳性能,并建议处理数据更改的替代方法。 |
避免 Nullable 列 | 讨论了为什么您可能想要避免 Nullable 列以节省空间并提高性能。 演示了如何为列设置默认值。 |
避免 Optimize Final | 解释了 OPTIMIZE TABLE ... FINAL 查询是资源密集型的,并建议优化 ClickHouse 性能的替代方法。 |
分析器 | 考察 ClickHouse 分析器,这是一个用于分析和优化查询的工具。 讨论了分析器的工作原理,其好处(例如,识别性能瓶颈),以及如何使用它来提高 ClickHouse 查询的效率。 |
查询分析 | 解释了 ClickHouse 的抽样查询分析工具,这是一个帮助分析查询执行的工具。 |
查询缓存 | 详细介绍了 ClickHouse 的查询缓存,这是一项旨在通过缓存频繁执行的 SELECT 查询结果来提高性能的功能。 |
测试硬件 | 如何在任何服务器上运行基本的 ClickHouse 性能测试,而无需安装 ClickHouse 程序包。 (不适用于 ClickHouse Cloud) |