美文网首页
mongodb笔记09--手动预先分片

mongodb笔记09--手动预先分片

作者: 机智的老刘明同志 | 来源:发表于2018-11-23 08:08 被阅读31次

chunk:

        mongodb的分片不是从单篇文档的级别平均的散落在每个片上, 而是N条文档,形成一个块"chunk",优先放在某个片中,chunk的概念有些类似于数据库中的分区的概念。当chunk的大小达到了chunk size的指定大小后(默认是64M,可在config数据库中修改),或chunk中的文档数量超过了一定值之后也会分裂这个chunk。

         自然而然,如果我们有很多数据,优先向一个片中插入,当chunk数据量过大再移动chunk,随着数据的增多,shard的实例之间的chunk来回移动现象自然将带来服务器之间的IO的增加

手动预先分片:

        定义一个规则, 某N条数据形成1个块,预告分配M个chunk,M个chunk预告分配在不同片上.以后的数据直接入各自预分配好的chunk,不再来回移动

例1:

        预先在shop数据库的user表上根据user_id字段数量分割,每隔1K条数据分一个chunk一共分10次,这样的界限切好chunk(虽然chunk是空的), 这些chunk将会均匀移动到各片上.

例2:

        以age为片键先创建片

                db.runCommand({ enablesharding:"lin" })

                db.runCommand({ shardcollection : "lin.c1", key : { age:1 }})  

此时只有一个 chunk在shard1上

                sh.splitAt("lin.c1", { age:10});

                sh.splitAt("lin.c1", { age:20});

此时有三个 chunk 在shard1上

        手动moveChunk:

            db.adminCommand( { moveChunk : "lin.c1",find : { age:0},to : "shard0" } )

            db.adminCommand( { moveChunk : "lin.c1",find : { age:10},to : "shard1" } )

            db.adminCommand( { moveChunk : "lin.c1",find : { age:20},to : "shard2" } )

        此时[负无穷,10),的数据位于shard0上,[10,20)的数据位于shard1上,[20,正无穷)的数据位于shard2上。

当插入测试数据,就会按照你指定的规则进行数据分配了...

相关文章

  • mongodb笔记09--手动预先分片

    chunk: mongodb的分片不是从单篇文档的级别平均的散落在每个片上, 而是N条文档,形成一个块"c...

  • NoSQL三--mongodb(二)

    目录 十一、mongodb分片介绍十二、mongodb分片搭建十三、mongodb分片测试十四、mongodb备份...

  • MongoDB分片群集组件

    MongoDB分片群集包含以下组件: 分片:每个分片包含分片数据的子集。从MongoDB 3.6开始,必须将分片部...

  • MongoDB 集群配置笔记

    MongoDB 集群配置笔记 配置一个含有主从机制、自动分片、去中心化的MongoDB集群 一、配置文件说明 必备...

  • Mongodb分片集群搭建

    MongoDb分片集群搭建 基于mongodb3.6 分片集群的权限控制 Brief: 内部通过keyfile控制...

  • MongoDB 集群

    分片群集 MongoDB分片群集由以下组件组成: 分片:每个分片包含分片数据。每个分片都可以部署为副本集。 mon...

  • MongoDB Sharding(分片)笔记

    Sharding 是一种将数据分散到多台主机上的方法,使得 MongoDB 能够支持处理超大数据集和超高吞吐量。实...

  • Mongodb分片集群部署

    Mongodb分片概括 分片在多台服务器上分布数据的方法, Mongodb使用分片来支持具有非常大的数据集和高吞吐...

  • Mongodb分片集群部署

    Mongodb分片概括 分片在多台服务器上分布数据的方法, Mongodb使用分片来支持具有非常大的数据集和高吞吐...

  • 【mongoDB】mongoDB分片策略

    chunk切分是根据分片策略进行实施的,分片策略的内容包括分片键和分片算法。 当前,MongoDB支持两种分片算法...

网友评论

      本文标题:mongodb笔记09--手动预先分片

      本文链接:https://www.haomeiwen.com/subject/tesdqqtx.html