gpt4 book ai didi

mongodb - 我应该如何配置我的 Mongodb 集群?

转载 作者:可可西里 更新时间:2023-11-01 09:58:27 24 4
gpt4 key购买 nike

我正在运行一个分片的 mongodb 环境 - 3 个 mongod 分片、1 个 mongod 配置、1 个 mongos(无复制)。

我想使用 mongoimport 将 csv 数据导入数据库。我在 210 个 csv 文件中以 500,000 条为增量存储了 1.05 亿条记录。我知道 mongoimport 是单线程的,我读到我应该运行多个 mongoimport 进程以获得更好的性能。但是,我试过了并没有加快速度:

当并行运行 3 个 mongoimports 时,每个进程每秒获得约 6k 插入(因此 18k i/s)与运行 1 个 mongoimport 时,我获得约 20k 插入/秒。

由于这些进程是通过单个 mongod 配置和 mongos 路由的,我想知道这是否是由于我的集群配置所致。我的问题是,如果我以不同的方式设置我的集群配置,我会获得更好的 mongoimport 速度吗?我想要更多的 mongos 进程吗?我应该一次触发多少个 mongoimports 进程?

最佳答案

因此,您需要做的第一件事是“预拆分”您的 block 。

假设您已经对要导入的集合进行了分片。当您“从头开始”时,所有数据都将开始传输到单个节点。当该节点填满时,MongoDB 将开始将该节点“拆分”为 block 。一旦达到大约 8 个 block (即大约 8x64MB 的索引空间),它将开始迁移 block 。

所以基本上,您实际上是在向单个节点写入数据,然后该节点的速度会变慢,因为它必须读取数据并将其写入其他节点。

这就是为什么您没有看到 3 mongoimport 有任何加速。所有数据仍会传输到单个节点,您正在最大限度地利用该节点的吞吐量。

这里的技巧是“预拆分”数据。在您的情况下,您可能会对其进行设置,以便在每台机器上获得大约 70 个文件的数据。然后您可以在不同的线程上导入这些文件并获得更好的吞吐量。

Craigslist 的 Jeremy Zawodny 对此 here 发表了一篇合理的文章. MongoDB 站点有一些文档 here .

关于mongodb - 我应该如何配置我的 Mongodb 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com