【 TiDB 使用环境】生产环境
【 TiDB 版本】6.1.0
同一个SQL,每次执行,占用的tidb_server内存是不是固定大小 不变的啊
数据量跟执行计划不变的话应该是固定的。
嗯,感谢啊
比如一个SQL执行占用内存1G, 然后去掉一些过滤条件,查询出来的数据量应该是更大的,占用的内存反而小了, 这种现象正常吗
不正常,tikv一般能过滤where,然后送到tidb内存中
基本上差不多
楼主只是关注内存使用量的问题吗?还是遇到什么问题了
单就看文字描述,内存应该是不变的
和系统负载有关系
是不固定
当然不是,跟参数和数据以及执行路径都有关系
你是不是想问,查询一次后,结果会在内存中缓存,影响短时间内再次查询的时间?
不是,就是想问下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
变动很小,除非执行计划发生了质变
这里的isdeleted=0删除之后,按说数据量会变多,占用的内存按道理来说应该也会变多,
但是实际执行后发现内存反而更少了
select … from A.aaa join A.bbb
与
select … from B.aaa join A.bbb
占用的内存怎么会不一样呢
可能不一样
学习下