【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
TIDB 是否有并行度查询功能,类似Oracle 和MySQL 的PARALLEL ,查了资料没找到
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
TIDB 是否有并行度查询功能,类似Oracle 和MySQL 的PARALLEL ,查了资料没找到
没有这样的语法,但tidb 执行计划的算子默认是并行的,且可以配置,如tidb_executor_concurrency, System Variables | 平凯星辰 Docs
没操作过,学习下
tidb好像是没有显式指定并行的参数,但是它好像默认并行的
不准确,楼上大佬@ MrSylar说的对
没有,靠算子下推到多个tikv然后并发
没有吧
默认并行的
如果当前的查询仍然达不到你业务的要求,那最好就是从业务层面开始考虑优化
看看执行计划里的concurrency等信息。默认就是并行处理了,应该是有相应的参数可以不让并行,对比一下。
可以设置tidb_distsql_scan_concurrency来控制单个查询中并发执行的操作数量
TiDB 无 Oracle/Mysql 式统一PARALLEL单 Hint,本地算子并行靠会话变量控制,TiFlash 分布式并行使用 MPP 模式。
TiDB 无 Oracle、MySQL 类似的单语句全局并行度提示语法。但其有自身并行机制,分算子内、分布式并行,通过系统变量控制不同维度并行度
tidb_distsql_scan_concurrency15[1, 256]LIMIT 子句的简单查询,如果 LIMIT 行数小于 100000,该查询的 scan 操作被下推到 TiKV 时,会将该变量的值视为 1 进行处理,以提升执行效率。SELECT MAX/MIN(col) FROM ...,如果 col 列有索引且该索引的顺序与 MAX(col) 或 MIN(col) 函数所需的顺序一致,TiDB 会将该查询改写为 SELECT col FROM ... LIMIT 1 进行处理,该变量的值也将视为 1 进行处理。例如,对于 SELECT MIN(col) FROM ...,如果 col 列有升序排列的索引,TiDB 通过将该查询改写为 SELECT col FROM ... LIMIT 1,可以直接读取该索引中第一条数据,从而快速得到 MIN(col) 值。SLOW_QUERY 表进行查询时,此变量可以控制解析慢日志文件的并发度。行存 TiKV:用SET_VAR(tidb_executor_concurrency=N)实现单机多线程并行;
列存 TiFlash:开启 MPP + 限制单查询线程数,实现跨节点分布式并行,等价于 Oracle 并行查询。
TiDB 没有 Oracle 式 session 级 PARALLEL Hint,并行由优化器按 tidb_executor_concurrency、tidb_distsql_scan_concurrency、Coprocessor 并行等全局/会话变量自动决定。大查询可调:SET @@tidb_executor_concurrency=8; 或 SET @@tidb_distsql_scan_concurrency=15;,并用 EXPLAIN ANALYZE 看是否并行 cop/task。MPP 模式下 ANALYTICAL 负载另有 tidb_allow_mpp 等开关,语义与 Oracle PARALLEL 不完全相同。
tidb_index_lookup_concurrency、tidb_index_lookup_join_concurrency、tidb_executor_concurrency