感谢,那我还有一个疑问 不设置block-cache tikv占20G内存,假设设置了block-cache 为15G内存,强行限制他上限是15G,会有影响吗,那之前多出去得5G怎么办呢,设置上限得话会使TIKV不能正常工作吗?
不会有大的影响,缩小它只是减小了缓存的大小而已。
BlockCache 是一个存储层的缓存,是 TiKV 为了提高读取性能以及减少对磁盘的读取而设置的。
RocksDB 将存储在磁盘上的文件都按照一定大小切分成 block(默认是 64KB),读取 block 时先去内存中的 Block Cache 中查看该块数据是否存在,存在的话则可以直接从内存中读取而不必访问磁盘。
BlockCache 按照 LRU 算法淘汰低频访问的数据,默认大小是系统总内存大小的 45%,用户也可以自行修改 storage.block-cache.capacity
的值,但不建议超过总内存的 60%。
https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview#rocksdb-的内存占用
好的,我看配置文件那里 单机部署是有三个tikv同时部署到一个IP,那么block-cache设置是限制得一个,还是这三个总和呢
在配置文件的server_configs层级下,有个tikv层级配置,这个是对所有tikv实例节点都生效的,可以在这里配置。在这里配置后,就不需要到每个节点上配该参数了。
比如:
server_configs:
tidb:
log.slow-threshold: 300
tikv:
storage.block-cache.capacity: "<The value refers to the calculation formula result of the multi-instance
pd:
https://docs.pingcap.com/zh/tidb/stable/hybrid-deployment-topology
好的感谢,我就是在这里配的,看了公式是
storage.block-cache.capacity = (MEM_TOTAL * 0.5 / TiKV 实例数量)
我总共是30G内存,我在 storage.block-cache.capacity改成了15G,后来再插数据内存确实没之前上涨那样了,但是看这个公式我应该还得改一下吧,因我我三个TiKV 实例部署在都部署了同一个单机上,按理说应该还要除以3,storage.block-cache.capacity 应该写5G而不是 15G吧
没错,还需要平均分配给不同的tikv 节点
单个模拟集群,什么东西都是倍用的
单机肯定啊,首先mysql是单进程多线程,tidb本身就把server层,存储引擎层,pd也就相当于mysql的主线程都拆开来了,多进程交互内存本来就大。
也就是本身这些组件的交互运行成本是超出mysql的,所以单机的话还不如去做个mysql
都部署到一台啊
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。