無論何時我被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