TIDB插数据很占内存为什么?

部署了一个单体的模拟集群,发现一直往里查数据内存上涨的很快,看了LSM-tree数据接口本身就是空间放大,这个也理解,但是我看LSM-tree只有C0层是内存层面,当数据到一定量,C0层就合并到下面的Cn层去了,要占空间也应该是硬盘空间占的多呀,有合并这个操作的话,为什么内存占用率也会跟着越来越大呢

你是指tidb server还是tikv内存占用,最好top看下,按shift+m内存排序,看看SHR列,是什么进程占用的。
我以前测试大部分情况都是tikv占用内存稳定,tidb server往往会增长很快

单体模拟整体本身就是伪命题

你怎么确定内存是lsm tree占据的,把各种组件的内存看清楚,分布式的比单机的坑定多占用一些内存

先确实是什么占用了内存

图片在已上传,在楼上 tidb-server 和3个tikv排名前四

截图已上传,请查看

单机部署 1tidb + 3tikv + 1iflash + 1mysql + N个其他组件。

只能说能正常跑起来都不错了,这种部署情况建议只看功能特性。
如果要看性能情况,这个部署架构就是最大的问题,这评估不了性能问题,因为所有组件资源竞争挤兑太多。要看性能,就分节点去部署。

1 个赞

单机部署这个占用是正常水平,tidb-server是go语言写的内存释放有个gc还是需要一些时间的

单机的模拟集群没有对比性吧,能正常跑起来都厉害了

好的感谢,只是不清楚一点 插入数据的时候,同样情况,用tidb明显比mysql内存占用多,不知道占用的这个因素有没有因为LSM-tree空间放大的原因导致的?

也就是原因之一是 因为gc释放的原因,和插入数据时LSM-tree空间放大关系不大?

:upside_down_face: 单机建议直接play ground或单tikv

不重新部署得情况下,怎么让内存tikv得内存降下来呢

如果有数据的话,用DM备份下重建集群 :upside_down_face:

怎么让tikv内存降下来呢 再不插入数据得情况下,目前是居高不下

tikv占用内存过高,通常是 block-cache参数太大导致的。

你可以将这个值设置小一些,尤其是多个tikv混合部署的场景,这个参数尤为重要,需要调到合适的内存数值。

具体你可以在论坛上搜索怎么优化这个参数。

tiup cluster reload tidb-prod001 -R tikv

执行这个 重启tikv可以吗

对,通过 tiup cluster edit-config 命令调整集群的 tikv 参数后,可以这样执行只reload tikv节点。

reload操作会刷新最新的配置,并重启对于的节点集群。