TiFlash 性能调优
本文介绍了使 TiFlash 性能达到最优的几种方式,包括规划机器资源、TiDB 参数调优、配置 TiKV Region 大小等。
资源规划
对于希望节省机器资源,并且完全没有隔离要求的场景,可以使用 TiKV 和 TiFlash 联合部署。建议为 TiKV 与 TiFlash 分别留够资源,并且不要共享磁盘。
TiDB 相关参数调优
对于 OLAP/TiFlash 专属的 TiDB 节点,建议调大读取并发数
tidb_distsql_scan_concurrency
到 80:set @@tidb_distsql_scan_concurrency = 80;
开启 Super batch 功能:
tidb_allow_batch_cop
变量用来设置从 TiFlash 读取时,是否把 Region 的请求进行合并。当查询中涉及的 Region 数量比较大,可以尝试设置该变量为1
(对带aggregation
下推到 TiFlash Coprocessor 的请求生效),或设置该变量为2
(对全部下推到 TiFlash Coprocessor 请求生效)。set @@tidb_allow_batch_cop = 1;
尝试开启聚合推过
Join
/Union
等 TiDB 算子的优化:tidb_opt_agg_push_down
变量用来设置优化器是否执行聚合函数下推到 Join 之前的优化操作。当查询中聚合操作执行很慢时,可以尝试设置该变量为 1。set @@tidb_opt_agg_push_down = 1;
尝试开启
Distinct
推过Join
/Union
等 TiDB 算子的优化:tidb_opt_distinct_agg_push_down
变量用来设置优化器是否执行带有Distinct
的聚合函数(比如select count(distinct a) from t
)下推到 Coprocessor 的优化操作。当查询中带有Distinct
的聚合操作执行很慢时,可以尝试设置该变量为1
。set @@tidb_opt_distinct_agg_push_down = 1;