V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
boyhailong
V2EX  ›  MongoDB

mongodb 和 mysql 查询的差异

  •  
  •   boyhailong · 2016-12-19 18:21:47 +08:00 · 3612 次点击
    这是一个创建于 2677 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    3 条回复    2016-12-19 22:13:44 +08:00
    liprais
        1
    liprais  
       2016-12-19 18:37:41 +08:00
    完全不一样,与其说区别还不如说一样的地方
    billlee
        2
    billlee  
       2016-12-19 22:01:19 +08:00
    如果是现代的 WiredTiger, 在缓冲池的管理上和 InnoDB 没有大的区别,但 InnoDB 一般都是 O_DIRECT 绕过文件系统的 cache 的,而 WiredTiger 不会绕过文件系统 cache, 这个区别主要是因为 WiredTiger 默认启用了 snappy 压缩,在文件系统 cache 里的是压缩过的数据,而缓冲池里的未压缩的数据。 WiredTiger 有个默认的自动计算缓冲池大小的机制,会留出相当大的一部分内存给文件系统 cache 用。
    tinybaby365
        3
    tinybaby365  
       2016-12-19 22:13:44 +08:00
    如果是用 mmap 存储引擎(老版本),内存不是自己控制的, mmap 把文件的内容映射到内存,读内存就是读文件,但这个内存的使用量不受使用者控制。极端情况下会使用所有能使用内存。一般不建议把 mongodb 和其他东西部署在同一台机器上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3126 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:24 · PVG 22:24 · LAX 07:24 · JFK 10:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.