allow_asynchronous_read_from_io_pool_for_merge_tree 允许读取线程 (流) 的数量超过查询执行流水线其余部分的线程数。
通常,max_threads 设置会控制并行读取线程和并行查询处理线程的数量:
数据会按顺序从磁盘中逐列读取。
异步数据读取
max_streams_for_merge_tree_reading 设置明显
optimize_read_in_order 呢?
optimize_read_in_order 优化的优先级高于异步读取
optimize_read_in_order 优化 时,allow_asynchronous_read_from_io_pool_for_merge_tree 设置会被忽略 / 禁用。
演示上述所有内容的示例
- 创建并加载英国 Property Price Paid 表
- 检查 max_threads 的设置值 (默认值为 ClickHouse 在执行查询的节点上检测到的 CPU 核心数
- 查看在读取和处理数据时使用默认线程数的查询管道
- 检查查询管道是否使用 60 个异步读取线程,以及查询执行流水线其余部分是否使用默认线程数
- 检查查询管道,读取和处理数据均使用 20 个线程
- 检查查询管道:其中 60 个线程用于异步读取,20 个线程用于其余查询执行流水线
- 检查查询管道:在可应用
optimize_read_in_order 优化时,使用 60 个异步读取线程,其余查询执行流水线使用 20 个线程