mongodb 和 mysql 查询的差异

2016-12-19 18:21:47 +08:00
 boyhailong

今天下午听外面来的云服务的工程师介绍, mongodb 云服务; 他说 mongo 的 query 是先加载索引,查询的具体数据会驻留内存,然后吃满内存,随着操作系统内存策略而改变存储大小; 但是 mysql 查询时也是先加载索引,再加载具体数据,但更多细节的区别 表示不清楚,大神来解释二者在查询时候的细节区别

3622 次点击
所在节点    MongoDB
3 条回复
liprais
2016-12-19 18:37:41 +08:00
完全不一样,与其说区别还不如说一样的地方
billlee
2016-12-19 22:01:19 +08:00
如果是现代的 WiredTiger, 在缓冲池的管理上和 InnoDB 没有大的区别,但 InnoDB 一般都是 O_DIRECT 绕过文件系统的 cache 的,而 WiredTiger 不会绕过文件系统 cache, 这个区别主要是因为 WiredTiger 默认启用了 snappy 压缩,在文件系统 cache 里的是压缩过的数据,而缓冲池里的未压缩的数据。 WiredTiger 有个默认的自动计算缓冲池大小的机制,会留出相当大的一部分内存给文件系统 cache 用。
tinybaby365
2016-12-19 22:13:44 +08:00
如果是用 mmap 存储引擎(老版本),内存不是自己控制的, mmap 把文件的内容映射到内存,读内存就是读文件,但这个内存的使用量不受使用者控制。极端情况下会使用所有能使用内存。一般不建议把 mongodb 和其他东西部署在同一台机器上。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/328700

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX