想象一下,一个数据库集合包含许多记录(流量数据)和两个使用它的独立服务。
第一个服务只是使用聚合框架读取数据,并且它需要很长时间,因为不是每个字段都被索引,所以假设它在该集合上生成大量读取。这种读取每15分钟完成一次。
第二项服务通常什么也不做,但在某些时刻它也可以开始进行大量的聚合查询,而在其他时刻也可以进行大量的更新查询。
我的问题是:读取 第一个服务是否在第二个服务上有任何副作用,即它是否会降低第二个服务的速度。关于第二次服务大量读取的相同问题会影响第一次服务。
据我所知,第二次服务的更新会因为mongoDB写锁定而导致每个进程变慢,但读取对我来说并不神秘。
伊万
答案 0 :(得分:1)
读取不会对彼此产生直接影响。正如您所提到的,MongoDB使用一个编写器很多读者模型,因此只要您的工作负载是只读的,它们就不会直接相互影响。
也就是说,如果查询需要的数据多于RAM中可以包含的数据,那么它们将争夺对可用RAM的访问权限。此竞赛需要访问磁盘中不在RAM中的数据,这也可能导致一组查询相互影响,因为它们必须都从磁盘读取。