DDS数据库均衡问题

网友投稿 807 2022-05-28

用户在扩容添加一个shard节点后,balance线程检测到新的shard节点后,开始执行均衡策略,通过执行movechunk命令将其他shard上的一些chunk迁移到新的shard上,进行负载均衡,但是用户发现,执行movechunk的速度特别慢,一个chunk的迁移需要5分钟左右。

经过对movechunk命令的分析,简单讲,该过程相当于把源shard上制定chunk的数据插入到新的shard下,影响插入过程的一般有索引,以及其他插入操作;

DDS数据库均衡慢问题

通过分析用户表的索引和业务,发现用户在某个表上有很多索引;同时,在balance时业务是不中断的,因此我们模拟了类似的业务模型,验证发现

1.索引对movechunk命令执行速度有很大的影响,一般一个表上创建有5个以上索引,就会明显影响movechunk的速度;

2.业务的读写也对movechunk命令有影响,如果chunk上有游标,则movechunk命令会等待游标结束才开始执行,但是这个影响不是很明显;

分析了以上原因后,根据用户的业务,对用户的索引进行了优化,删除了不必要的索引

用户在均衡完成后发现,shard的磁盘使用率并没有降低。

这是因为mongodb默认,不会把已申请到的磁盘空间返还给操作系统,因此磁盘的使用率没有降低,但是mongodb会重新利用磁盘里的空间,也就是说,继续插入数据时,mongodb首先使用它自己已经申请的磁盘,因此这个问题影响不大,不会造成磁盘空间浪费;

MongoDB 文档数据库服务 DDS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《强化学习:原理与Python实现 》 —1.2 强化学习的应用
下一篇:一步一步教你用Html5的Canvas绘制钟表
相关文章