无论何时我被CPU绑定(在SSD上运行),我都会看到Mongo只在我的机器上使用一个cpu。我有8个。Mongo可以利用它吗?最好在红宝石中,如果不是,我可以很容易地转换。多线程可能与Mongo?
回答
随着MongoDB的2.2(这是Mozilla的SpiderMonkey的)当前的JavaScript引擎,在mongod的过程中只有一个线程在同一时间执行JavaScript,因此JS操作,包括地图/减少和聚合将被锁定到单个线程中。您可以通过插入hadoop适配器来执行并发映射/减少操作。不使用javascript的I/O操作可以在遵从v2.2中引入的某些locking rules的同时运行,因此可以以有限的方式实现并行性。如果您正在运行mongos(sharding your data),则可以实现稍微更好的并发性,但通常在单个mongod进程中,您将被限制为单个线程。
你的意思是它没有为单个操作使用多个线程,但是如果你运行10个并发查询,它们可以同时进行,不是吗? – Thilo
MongoDB 2.2及更早版本默认使用Mozilla的[SpiderMonkey](http://en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine))JavaScript引擎。如前所述,只有一个线程会执行JavaScript,但像MapReduce这样的操作确实允许[并发](http://www.mongodb.org/display/DOCS/How+does+concurrency+work)。您链接的服务器问题是指即将对Google [V8](http://en.wikipedia.org/wiki/V8_(JavaScript_engine))JavaScript引擎进行的更改。 – Stennie
注意:您已经可以[从V8开源](http://www.mongodb.org/display/DOCS/Building+with+V8),但这并不一定能保证更高的性能。一些最终修复和测试正在为2.3开发周期(见[SERVER-2407](https://jira.mongodb.org/browse/SERVER-2407))进行,之后V8应该成为默认的JavaScript引擎。 – Stennie
- 1. Python的多功能多线程与线程。线程? (可变线程数)
- 2. nanosleep不能与多线程
- 3. 多线程与功能NHibernate
- 4. 多线程可能在PHP?
- 5. 是否有可能与多线程执行JavaScript功能
- 6. 多线程应用程序,parrarel与写可能性
- 7. 与多线程
- 8. 与多线程
- 9. 多线程PHP与多线程Python
- 10. 多线程与单线程与Asp.net 3.5
- 11. 高性能多线程与插座
- 12. GWT(服务器端)多线程可能
- 13. GameKit多线程发送可能吗?
- 14. 多线程类加载可能吗?
- 15. 多线程FTP上传。可能吗?
- 16. 多线程性能
- 17. 许多线程或尽可能少的线程?
- 18. 多线程与R?
- 19. 多线程与MQ
- 20. 多线程与NSThread
- 21. 多线程与urlib2
- 22. 多线程与TCPclient
- 23. EventAggregator与多线程
- 24. NOLOCK与多线程
- 25. unique_ptr与多线程
- 26. 多线程与QString
- 27. java编程和java单线程多线程问题(单线程与多线程)
- 28. python线程,多线程与threading.thread
- 29. 多线程与线程占先同步
- 30. Mongo多个更新与PHP
Ruby如何适应?你想要多线程的客户端代码? – Thilo
好吧,如果Mongo不能,我没关系在客户端做多线程作为黑客。 –
另请参见:[MongoDB是否仅限于单个内核?](http://stackoverflow.com/questions/9773606/is-mongodb-somehow-limited-to-a-single-core)。 – Stennie