mongodmongodb和mysql的区别 性能对比和mysql的区别 面试(mongodb和mysql的区别 性能对比)

上海园区招商办公室

联系人:梁经理

联系电话:15000456391

欢迎来电咨询,竭诚为你服务!



Page Fault 在大多数数据库中都会存在,页面错误的定义是当 MongoDB 读取数据时,发现数据不再常驻的 Cache 中,而需要等待从磁盘读取数据到内存中的页面,这些页面就被称之为 Page Faul。

mongodmongodb和mysql的区别 性能对比和mysql的区别 面试(mongodb和mysql的区别 性能对比)

Page Fault 主要产生问题的是在用户在读取,或进行 DML 操作时所需要读取的数据不再虚拟内存中,而需要等待从磁盘中获取这些数据。

鉴于以上的原理,Page Fault 的问题产生基于空余的内存不足的问题,在系统中使用页面的情况会经常判断是否有空余的页面空间,基于剩余的空余页面的不足,会频繁驱逐目前已经不在使用的页面中的数据,并且加载目前需要使用的页面,基于内存不足的情况,这样的获取信息和驱逐页面的工作会频繁的进行。

我们可以基于 db.serverStatus() 来进行相关的信息的分析工作。

var info = db.serverStatus()
info.wiredTiger.cache['pages read into cache']
info.wiredTiger.cache['unmodified pages evicted']

通过动态比较上面的两个系统的监控值,为当前的内存不足所引起的问题。如果读取的 page read into cache 与 unmodified pages evicted 页面之间存在正比的关系,就很有可能是因为内存不足,或查询中经常有一些大型的获取数据的查询并且可能没有走索引导致。

同时我们还可以通过查看当前系统的内存是否充足,如 FREE 剩余内存多少,是否已经使用 WAP 方式。同时打开慢查询分析,查看是否当前有一些走了全表扫描的语句正在批量执行。

mongodmongodb和mysql的区别 性能对比和mysql的区别 面试(mongodb和mysql的区别 性能对比)

这里画一个问题分析的逻辑结构图如何解决在发现 Page Faults 后的操作。

mongodmongodb和mysql的区别 性能对比和mysql的区别 面试(mongodb和mysql的区别 性能对比)

db.serverStatus().extra_info.page_faults ,也可以通过 extra_info 命令来获取系统内告知的 page_faults 的数量。

mongodmongodb和mysql的区别 性能对比和mysql的区别 面试(mongodb和mysql的区别 性能对比)

除此以外,我们还可以通过一些其他的手段来判断你当前的内存是否够目前的运行使用。

  • 可以将当前的经常使用的 collection 进行统计。
  • 通过 db.collection.totalIndexSize() 来收集当前热度很高的索引的大小有多少,如果这些索引已经超过了当前的 wiredtiger cache size 就需要注意当前的内存扩容的问题了。

另外根据官方文档中的文字介绍:Ensure Indexes Fit in RAM — MongoDB Manual

Indexes do not have to fit entirely into RAM in all cases. If the value of the indexed field increments with every insert, and most queries select recently added documents; then MongoDB only needs to keep the parts of the index that hold the most recent or "right-most" values in RAM. This allows for efficient index use for read and write operations and minimize the amount of RAM required to support the index.

实际上在 MongoDB 中并不是一定要把整体的索引都装载到内存中的数据库, MongoDB 仅仅需要保证最近经常访问的最右侧的值在内存中即可,对于较大的索引与不充分的内存的情况是有一定的帮助和改善的。

关于作者:刘华阳

MongoDB 中文社区成员,数据库爱好者18年,MongoDB 狂热粉丝,曾经任国产某数据库产品经理,目前某互联网餐饮公司数据库部门负责人,PostGreSQL ACE、Austindatabases 公众号写手,熟悉 PostGreSQL、MySQL、MongoDB、SQL Server 等数据库。

文章阅读完了,不要滑走!接下来还有线上活动来袭~

腾讯云数据库专家工程师带您走进腾讯云 MongoDB 的知识海洋,通过其场景的经典案例为你分析解答其中的核心原理及处理方法。

MongoDB 中文社区线上直播

在本期直播中,将带您了解如何处理在腾讯云 MongoDB 的坑点、注意事项、核心实现原理、常见问题、智能诊断及优化实践。从而助力互联网行业的发展,并分享相关案例作为参考。

主题:

腾讯云 MongoDB 智能诊断及优化实践

分享嘉宾:

杨亚洲 | 腾讯云数据库专家工程师

时间:

6月15日(星期三)19:00

扫描下方二维码预约直播!

mongodmongodb和mysql的区别 性能对比和mysql的区别 面试(mongodb和mysql的区别 性能对比)

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 792114587@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.qiked.com/6831.html