tikv支持手动释放block cache里的缓存么?

目前正在使用spark进行大数据的算法测试,数据库使用tidb v6.1版本
使用表A进行算法测试,算法测试在第一次执行时,缓存内无缓存数据,因此执行时长较长
对表A进行数据的追加,扩大测试数据量级,但是因为tikv中存在表A的缓存数据,第二次的测试就不能很好的反应测试实际耗时,除了重启tikv服务,能不能手动释放一下tikv的缓存?

不支持

好像不支持

3 个赞

那我直接清除linux系统的所有缓存有效么?

好像没有看到相关说明,应该是不支持的

测试环境可以尝试,生产环境不建议直接强制释放内存。

sql是可以用sql_no_cache不让它缓存的,不太会spark ,如果也是sql可以试下

不支持

如果是测试环境,我觉得你可以试试这个看看。

这个设置是在tikv的配置文件里写,还是在数据库里配置参数?

这个应该是不支持的

不知道spark有没有这样的算子

在执行的sql里面

大佬,我设置了sql_no_cache后,看执行计划里面还是命中缓存呢?

如果你用的TiSpark,提几点小小的建议:
1.TiSpark读取数据是直接读取的TiKV,我印象中block缓存是TiDB Server中的。
2.你用mysql client下的explain可能并不代表Spark中的实际执行过程,建议可以在Spark中Explain一下。
3.看你应用Spark的场景,可能会有shuffler缓存,这一块也许会影响你的算法计算,建议考虑一下。

1 个赞

将block cache调小是否也能达到目的呢

sql_no_cache意思是不做缓存,但不会清除缓存,从第一次执行加上到后面每次就会都不走缓存了

blockcache是tikv的,准确来说是rocksdb的

嗯,但是spark sql不支持这样的写法,jdbc是可以的