gpt4 book ai didi

mongodb - 与单线程客户端相比,为什么 MongoDB 使用多线程客户端性能更好?

转载 作者:IT老高 更新时间:2023-10-28 13:26:21 26 4
gpt4 key购买 nike

我们最近使用 YCSB (https://github.com/brianfrankcooper/YCSB/wiki) 对 Oracle 10g 和 MongoDB 进行了基准测试,当我们尝试增加 1,000,000 个数据集的线程数时,Oracle 的性能在 4 个线程后保持不变,但 MongoDB 的性能一直越来越好,直到 8 个线程和之后只有读取更好,写入和更新(操作/秒)保持不变。

我们在 2 CPU Xeon 四核(共 8 核)+ 8 GB RAM 的 LAN 上运行此基准测试。

我们观察到,与单线程客户端相比,MongoDB 在多线程客户端上的性能更好,我的问题是:当 MongoDB 可以在更多负载下表现更好时,为什么它不能在更少负载下做同样的事情(比如说只是一个几个线程)通过利用多个核心?

最佳答案

在单核上处理请求在逻辑上非常简单。只需拥有接收请求并处理它的代码即可。

在 2 个内核上处理单个请求并不是那么简单,因为这样做需要您将请求分解为组件、分包工作、同步答案,然后构建单个响应。如果你做这个工作,虽然你可以减少挂钟时间(墙上的时钟看到多少时间过去),但你总是会让请求花费更多的 CPU 时间(消耗的总 CPU 资源)。

在像 MongoDB 这样的系统中,您希望有很多不同的客户端发出请求,因此没有必要尝试并行处理单个请求,并且完全有理由不这样做。

更大的问题是为什么 Oracle 在 4 个 CPU 之后没有增加并发性。可能的原因有很多,但一个合理的猜测是您遇到了某种锁定,这是保证一致性所必需的。 (MongoDB 不提供一致性,因此避免了这种类型的瓶颈。)

关于mongodb - 与单线程客户端相比,为什么 MongoDB 使用多线程客户端性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544037/

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