TiDB集群服务器升级是否需要修改配置文件?

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.4
你好,请问如果我升级服务器内存从16G升级到32G,配置文件中部分设定的内存使用是否需要变更?还是说升级的时候,会自动帮我调整为最优状态?

要手工进行调整

之前没设置过就不需要修改,之前如果设置过,就要做相应的修改

有的默认值是按百分比设置的,这种看着合适就不用改,如果是设置的固定值,可能就要改

没修改过一般不用改

有些参数可能是根据机器的配置设定的,不过安装时很多人一般都是采用默认值,如果之前没有设置过,可以不用管。如果设置过,按照比例配置下即可

如果是升级tikv 节点的机器内存,建议在内存升级后适当加大tikv的block cache capacity 参数,要注意是tiup edit config 方式修改,修改后还要tiup reload 轮转重启tikv集群。

如果是tidb节点机器,可以适当调大事务的内存限制大小,修改方式和上面tikv的类似。

如果是tipd 节点机器,可以不用调整,保持现状即可。

如果是TiCDC 节点机器,可以适当调大per table memory quota ,方式类似tikv。

当然,不调整也可以,只不过调整以后可以充分使用资源,获得更好的性能体验。

tidb、pd没问题就维持不变,tikv的话可以适当调下storage.block-cache.capacity,tiflash看有没有配置max_memory_usage_for_all_queries(默认是0),有配置的话可以加大,没有就不动

1 个赞

有些过时的参数是需要调整的

资源变小不用,资源变大优化一下。

做调整更好吧,我再问一下有没有手工收集系统统计信息的方法,内存增加是否需要重新收集系统统计信息?

内存增加不需要重新收集系统统计信息,手工就是analyze table XXXX 就行了, SHOW STATS_HEALTHY命令看健康度

统计信息是表的数据分布信息,存放在磁盘的,增加内存size不用重新收集。
如果是内存IO性能大幅度提升,可能会影响到优化器的判断,这时可以调整底层的成本因子,但是一般没人干这事 :face_with_open_eyes_and_hand_over_mouth:

自动应该不可能

感谢回复,其实我就是想知道底层的成本因子是如何计算的? 我了解到Oracle有手动收集系统统计信息,可以根据系统统计信息计算硬件的单次IO能力,多块读的吞吐量等用来计算全表扫描还是走索引的cost。一般来讲内存增加可能不直接影响cost计算。我理解在分布式系统,成本计算除了IO和cpu,比起单机系统应该增加网络成本,但是我在tidb的文档中还没找到成本因子cost计算的逻辑,如果哪位大侠知道,麻烦把地址发给我。

tidb和oracle没看到这个东西,成本因子是pg体系里面的概念。
大致意思就是把每一行数据的cpu/随机读/顺序读/索引读等都对应一个系数,计算成本的时候用统计信息中的行数乘以这个系数,执行计划最终选择成本最少的访问路径。当硬件调整大的时候,优化这个系数可以让优化器尽量准确。