gpt4 book ai didi

mongodb - 有没有多核利用NoSQL的系统?

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

我从昨天开始就开始使用 MongoDB,并且非常喜欢它。我正在尝试导入大量数据(20 亿行)并为其编制索引,但它似乎没有使用我的系统拥有的 8 个内核,并且导入正在以正常速率(60000 条记录/秒)进行。我只能想象索引该集合中的两列可能需要多长时间。有没有利用 CPU 多核特性的 MondoDB 类型的数据库?

最佳答案

如果 MongoDB 有致命弱点,那就是它只支持单线程写入和单线程 map-reduces。

与往常一样,这里需要权衡取舍。单线程写入是避免锁定问题和最小化开销的最简单方法。同样,多线程 map-reduce 是锁定数据的好方法。因此,生产系统上的单线程 map-reduce 可能更容易、更安全。

但是,您并非没有工具。 MongoDB 将为每个实例提供一个写线程。因此,如果您对 MongoDB 进行分片,那么您将为每个分片获得一个写入线程。

如果您想要在 20 亿行上建立多个索引,无论如何您都需要考虑分片。这里有一些快速数学:MongoID 是 12 个字节。 MongoID 上的索引将为 2B * 12 字节 = 22GB+。如果您现在想再添加两个索引(即使只是两个 4 字节整数),我们说的是每个索引 7.5GB。

所以在 2B 行,您谈论的是索引中有超过 37GB(最小值)。在大多数 8 核服务器上,这意味着您甚至无法将索引保存在内存中,更不用说任何数据了。

因此,如果您想要在这里获得真正的性能,您将需要开始考虑分片。仅基于一般数字。 FWIW,MySQL 将不再擅长处理 2B 文档。有了这么多数据,您真的会希望多台服务器跟上负载。

关于mongodb - 有没有多核利用NoSQL的系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848120/

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