1、如果开启了流控参数tidb_enable_rate_limit_action,这个变量控制是否为读数据的算子开启动态内存控制功能。读数据的算子默认启用 tidb_distsql_scan_concurrency 所允许的最大线程数来读取数据。当单条 SQL 语句的内存使用每超过 tidb_mem_quota_query 一次,读数据的算子会停止一个线程。
2、当读数据的算子只剩 1 个线程且当单条 SQL 语句的内存使用继续超过 tidb_mem_quota_query 时,该 SQL 语句会触发其它的内存控制行为,落盘。
3、所以不一定是内存达到了mem-quota-query 就马上被kill掉的。
4、另外需要注意的一点,mem-quota-query 是指query 大小,不是全局占用的内存大小。
8 个赞