as here請注意,mongodb在32位機器上將數據大小限制爲2GB,並且只有一個mongod實例。但是我想知道32位機器在理論上有4GB可尋址空間,而mongod可以使用這個4GB而不是2GB來存儲虛擬內存。那麼爲什麼答案是2GB,而不是4GB?爲什麼32位機上的mongodb將數據大小限制爲2GB,而不是4GB?
3
A
回答
8
的可尋址空間的4Gb是不一樣的是可用於由用戶應用程序打開內存映射文件的內存空間。一些可尋址空間是爲O/S內核和存儲器映射設備(如視頻卡)保留的。
例如,32位Windows將用戶模式(從而將內存映射文件)限制爲〜2Gb RAM,並將總系統RAM限制爲〜3.5Gb。
更多的閱讀,請參閱:
- Coding Horror: Dude, Where's My 4 Gigabytes of RAM?
- MSDN: Managing Memory-Mapped Files
- MSDN: Memory-Mapped Files
廣大開始遷移到64位,幾乎是十年前現代的桌面和服務器環境(請參閱64-bit operating system timeline on Wikipedia),因此這不是實際影響部署的限制。
您只想在數據有限的開發環境中使用32位MongoDB。
2
32位MongoDB進程被限制爲大約2 GB的數據。這已經讓很多習慣於不用擔心這個問題的人感到驚訝。原因是MongoDB存儲引擎使用內存映射文件來提高性能。
由於不支持32位以上的2GB以上,我們已經能夠讓我們的代碼更簡單更清晰。這大大減少了錯誤的數量,並減少了我們需要發佈1.0產品的時間。
相關問題
- 1. 爲什麼在32位機器上有2GB redis.io數據庫的限制
- 2. 爲什麼32位機器的最大容量是4GB?
- 3. 爲什麼在32位限制上2 GB而不是4 GB?
- 4. mongoDB 32位2GB限制,最佳實踐
- 5. 爲什麼32位二進制程序不能超過4GB的限制?
- 6. 爲什麼dd命令限制虛擬文件大小爲2GB?
- 7. max_old_space_size設置爲4GB,實際上限制爲2GB
- 8. 32位Windows和2GB文件大小限制(C與fseek和ftell)
- 9. 不受32或64位大小限制的Python整數的含義是什麼?
- 10. 爲什麼在32位armv7l上mmap 4GB文件成功了?
- 11. PHP耗盡4GB的限制,但不是2GB?
- 12. 爲什麼android將vm內存大小限制爲任意24或32 MB?
- 13. 爲什麼只有2GB的32位電腦?
- 14. 在32位機器上搜索大於4GB的圖形
- 15. 爲什麼32位等於4Giga字節而不是4吉位
- 16. 爲什麼Windows XP(32位)限制爲3GB的可用內存?
- 17. 爲什麼限制SQLAlchemy中的數據庫連接池大小?
- 18. 爲什麼堆棧大小有限制?
- 19. 在32位爲什麼地址空間限制爲2^31?
- 20. 對於32位分片什麼是每個分片的大小限制?
- 21. MongoDB單文檔大小限制爲16MB
- 22. 解決VirtualBox 4GB文件大小限制
- 23. 爲什麼FAT32磁盤限制爲4GB文件?
- 24. 爲什麼CGContextAddArc在32位而不是64位設備上工作?
- 25. 32位和4GB內存之間的關係是什麼?
- 26. MongoDB ona 64位機器的節點/碎片限制是什麼?
- 27. 什麼是Android APK大小限制(不是市場限制)?
- 28. 爲-1返回的計數位數爲12而不是32
- 29. 爲什麼IPv6 IP地址的大小爲128位而不是256?
- 30. 將django FloatField限制爲2位小數
在他們的博客幫助下刊登此帖子嗎? http://blog.mongodb.org/post/137788967/32-bit-limitations – Raptor 2013-02-25 03:43:54
@ShivanRaptor我之前看到過這篇文章,但它不能解釋爲什麼?我想知道如何計算出結果:2GB。 – jianpx 2013-02-25 04:17:49
我想(我不是一個設計mongoDB的人),2GB的數據,其餘的大小是映射,和其他支持文件。 – Raptor 2013-02-25 05:05:27