内存占用

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.1.0
同一个SQL,每次执行,占用的tidb_server内存是不是固定大小 不变的啊

数据量跟执行计划不变的话应该是固定的。

嗯,感谢啊

比如一个SQL执行占用内存1G, 然后去掉一些过滤条件,查询出来的数据量应该是更大的,占用的内存反而小了, 这种现象正常吗

不正常,tikv一般能过滤where,然后送到tidb内存中

1 个赞

基本上差不多

楼主只是关注内存使用量的问题吗?还是遇到什么问题了

单就看文字描述,内存应该是不变的

和系统负载有关系

是不固定

当然不是,跟参数和数据以及执行路径都有关系

你是不是想问,查询一次后,结果会在内存中缓存,影响短时间内再次查询的时间?

不是,就是想问下SQL执行每次在tidb_server内占用的内存是不是每次都是一样大小

了解了

同一条sql,大小不变:
下面tidb-server内存相关的:
查询:
show variables like ‘%quota%’;
tidb_mem_quota_query====>每条SQL占用缓存的大小

show variables like ‘%oom%’;
tidb_mem_oom_action | CANCEL | 或LOG===>直接记录到日志文件中

tidb_mem_oom_action====>如果每条SQK占用缓存的大小超过tidb_mem_quota_query值的时候,
并且启用临时磁盘,临时磁盘没有空间,由此参数控制具体是取消还是继续使用

启用临时磁盘:
show variables like ‘tidb_enable_tmp_storage_on_oom’;
| tidb_enable_tmp_storage_on_oom | ON |

show config where name like ‘%tmp-storage-path%’;
tmp-storage-path

show config where name like ‘%tmp-storage-quota%’;
tmp-storage-quota

变动很小,除非执行计划发生了质变

image
这里的isdeleted=0删除之后,按说数据量会变多,占用的内存按道理来说应该也会变多,
但是实际执行后发现内存反而更少了

select … from A.aaa join A.bbb

select … from B.aaa join A.bbb
占用的内存怎么会不一样呢

可能不一样

学习下