AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 5390
Accepted
João Pinto Jerónimo
João Pinto Jerónimo
Asked: 2011-09-05 12:52:20 +0800 CST2011-09-05 12:52:20 +0800 CST 2011-09-05 12:52:20 +0800 CST

分片对小集合有效吗?

  • 772

如果我有大量的收藏,数据库分片看起来很棒。如果我有很多相当大的集合怎么办?假设对于 1 亿个文档(不是很大的评论)的集合,分片是有效的。它是否也对 10 000 个集合每个 10 000 个文档有效?

(我认为这个问题对于面向表的数据库仍然有效,如果你用表替换集合,用行替换文档。如果可能的话,我想知道理论答案以及特定 MongoDB 场景中的答案,如果与理论不同的话回答。)

mongodb
  • 2 2 个回答
  • 976 Views

2 个回答

  • Voted
  1. Best Answer
    Gates VP
    2011-09-07T00:47:19+08:002011-09-07T00:47:19+08:00

    它是否也对 10 000 个集合每个 10 000 个文档有效?

    大多数人都有“单一大型集合”的问题,因此分片显然有助于减少平衡这些数据的麻烦。

    然而,当你有 10000 个小集合时,你头疼的可能不是“平衡数据”。对于这么多小集合,您的问题很可能是跟踪这些集合。根据您的文档大小,您甚至可能无法突破实际发生分片的下限。

    对于非常小的集合,您可以使用鲜为人知的movePrimary 命令来管理数据的位置。

    当然,另一种看待这个问题的方式是为什么你有 10k 的收藏?集合不需要同质对象,并且对于 10k 集合,必须生成其中的大部分。很可能在同一个集合中存储不同“类型”的数据,减少集合的数量,然后将类型作为分片键的一部分。

    • 5
  2. Chris Fulstow
    2011-09-05T15:51:19+08:002011-09-05T15:51:19+08:00

    MongoDB 分片的工作原理是将一个集合分成更小的“块”,然后将它们平均分布在多台机器上。通常最有效的默认块大小为 200MB。因此,除非一个集合增长到远大于 200MB,否则它不会分成块,因此不符合分片的条件,所以不会有任何好处。

    在一般情况下,在多台机器上分片数据是扩展读取、写入和查询的一种非常有效的方法。您可以获得多个 CPU、硬盘和内存存储的好处,它们可以并行读取、写入和处理数据。内存横向扩展对于 MongoDB 尤为重要,MongoDB 的高性能对内存中的数据拟合非常敏感。

    • 4

相关问题

  • 关于操作/管理 MongoDB 的良好资源

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve