【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.1.1
【遇到的问题】
操作内容:
INSERT INTO xx
SELECT * FROM yy
LIMIT 2000000;
表现:
- 单条sql 的内存设置为1G(默认设置),但是 information_schema.processlist 中查询到的sql实际使用内存为 3.3G,很疑惑? 而且不管我怎么调整limit 的数量,始终都是3.3 个G 的内存占用。
- 另外,从日志里看,每过一段时间会触发并停止一个算子的线程,该sql能否完成执行,就看操作时间跟算子停止步伐的比赛了。。
测试:
随后,我调整了 tidb_distsql_scan_concurrency = 12(此前设置为了24),随后再跑sql的话,内存也掉了一半,变成了1.6G。
疑惑:
官方文档里描述 tidb_mem_quota_query 参数时说,该参数控制了单条sql的内存占用,但是也没说跟 tidb_distsql_scan_concurrency (scan并发度)有关啊?那这个tidb_mem_quota_query = 1G 的限制,到底是怎么限制的?
【附件】