mongo 分片事务_在MongoDB分片集群中拆分数据块chunks

本文介绍了在MongoDB分片集群中手动拆分数据块的场景和方法。当数据块超过最大大小或需要优化数据分布时,可以使用`splitFind()`和`splitAt()`命令进行手动拆分。手动拆分应考虑文档数量和平均大小以保持数据块均衡。`sh.status()`命令可用于监控数据块状态,确保集群健康。
摘要由CSDN通过智能技术生成

17297733945fad1a683bb754b8f8a696.png

c82c92056e030456c440a08a3d861256.png

MongoDB Manual (Version 4.2)> Sharding > Data Partitioning with Chunks > Split Chunks in a Sharded Cluster

通常,如果某个数据块超过最大块大小,则MongoDB会在插入后对数据块进行拆分。但是,在以下情况下,您可能需要手动拆分数据块:

  • 您的集群中有大量数据,并且只有很少的数据块,就像使用现有数据部署集群后的情况一样

  • 您希望添加大量最初驻留在单个数据块或分片中的数据。例如,您计划插入大量数据,这些数据的分片键值在300400之间,但是所有分片键的值在250500之间都在一个块中(且落在一个分片上)。

注意

MongoDB提供了 mergeChunks 命令以将连续的块范围合并为一个块。有关更多信息,请参考在分片群集中合并数据块。

如果移动有利于接下来的插入,则平衡器可以立即将最近拆分的数据块迁移到新的分片上。平衡器不会区分是手动拆分的数据块还是系统自动拆分的数据块。

警告

在分片集合中拆分数据以创建新数据块时,请务必小心。当你对一个已有数据的集合进行分片操作时,MongoDB会自动创建数据块以均匀分布该集合。为了有效地在分片群集中拆分数据,必须考虑单个数据块中的文档数和平均文档大小才能创建统一的数据块大小。当数据块的大小不规则时,分片间可能具有相同数量的数据块,但它们的数据大小却大不相同。应避免由于创建时的拆分而导致的分片集合具有大小不同的数据块现象。

使用sh.status()来确定当前集群中的数据块范围。

想要手动进行数据块的拆分,使用带middle或者find字段的split命令。mongos shell提供了sh.splitFind()sh.splitAt()帮助方法。

splitFind()将包含与该查询匹配的返回的第一个文档的数据块拆分为两个大小相等的数据块。您必须将分片集合的完整命名空间(即“.”)指定给splitFind()splitFind()中的查询可以不使用分片键,尽管这样做几乎总是有意义的(指可以利用到分片键索引)。

示例

下面的命令对records数据库的people集合为包含zipcode字段值为63109的数据块进行拆分:

sh.splitFind( "records.people", { "zipcode": "63109" } )

使用splitAt()将大块一分为二,将查询的文档用作新的块的下限:

示例

下面的命令对records数据库的people集合为包含zipcode字段值为63109的数据块进行拆分:

sh.splitAt( "records.people", { "zipcode": "63109" } )

注意

splitAt()不一定会将数据块平均为两个大小相等的块。拆分发生在于查询匹配的文档的位置,而不会考虑该文档在整个数据块中的位置。

另请参考空集合。

原文链接:https://docs.mongodb.com/manual/tutorial/split-chunks-in-sharded-cluster/index.html

译者:刘翔

MongoDB中文社区翻译小组成员

坐标深圳的程序猿一枚,后台开发。工作中经常接触MongoDB,请多指教~

往期发布:

*查看更多翻译请移步至MongoDB中文社区网站(mongoing.com)查阅中文用户手册。

The mongo Shell

mongo 命令行

配置 mongo shell

查看 mongo shell帮助文档

MongoDB CRUD操作

— MongoDB中的CRUD操作

—— MongoDB读隔离性,一致性与近因性

批量写操作

读关注

写关注

数据模型

— MongoDB数据建模介绍

事务

事务

事务操作

索引

2dsphere索引

哈希索引

索引属性

在集合上创建索引

量索引使用情况

安全

安全检查列表

启用访问控制

身份验证

审计

—— 配置审计

—— 配置审计过滤器

—— 系统事件审计消息

网络和配置强化

安全参考

—— system.roles 集合

—— system.users 集合

—— 资源文档

—— 权限操作

—— 附录A:用于测试的 OpenSSl CA 证书

—— 附录B:用于测试的OpenSSL服务器证书

—— 附录C:用于测试的OpenSSL客户端证书

复制

副本集成员

副本集Oplog

副本集数据同步

副本集部署架构

分片

分片键

管理

产品说明

操作检查表

开发检查表

性能

备份方法

存储

—— WiredTiger存储引擎

—— 内存存储引擎

常见问答:MongoDB 存储

2a342c670b9fa09c5e125e97611489b4.png

喜欢我们,

分享、点赞、在看三连哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值