微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB 4.4.1 mirroredRead vs secondaryPreferred readPerence

如何解决MongoDB 4.4.1 mirroredRead vs secondaryPreferred readPerence

在MongoDB 4.4.1中,有mirroredRead配置,该配置允许主数据库将读取/更新请求转发到辅助副本集。

当其采样率设置为1.0时,它与secondaryPreferred readPerence有何不同? mirroredRead的用例是什么?

参考-https://docs.mongodb.com/manual/replication/#mirrored-reads-supported-operations

解决方法

mirroredRead的用例是什么?

这在您链接的文档中有描述:

MongoDB提供镜像读取,以预热可选二级成员的缓存

如果您不熟悉缓存预热,则有很多描述它的资源,例如https://www.section.io/blog/what-is-cache-warming/

辅助阅读:

  • 被发送到辅助服务器,从而减轻了主服务器上的负载
  • 可以返回陈旧的数据

镜像读取:

  • 已发送到主要
  • 始终返回最新数据

mirroredRead配置,允许主数据库将读取/更新请求转发到辅助副本集。

这是不正确的:

  • 镜像的 read 不适用于更新。
  • 读取结果不是“转发”的。主数据库使用其本地数据响应读取。 另外,主服务器向一个或多个辅助服务器发送读取请求,但根本不接收该读取的结果(并且不会将辅助服务器的读取结果“转发”给应用程序)。 / li>
,

让我们假设您始终使用主要读取首选项,并且有2个成员可以被选为主要读取成员。

由于您的所有读取都在主实例中进行,因此其缓存已大量填充,并且由于您的其他可选举成员没有收到任何读取,因此可以将其缓存视为空。

使用镜像读取,主数据库也会向该辅助数据库发送一部分(在您的问题中为100%)读取请求,以使她熟悉读取查询的模式并填充其缓存。

突然发生灾难,当前主要故障。现在,您的新主数据库具有预热的缓存,可以像以前的主数据库一样快地响应查询,而不会震惊系统以填充其缓存。

关于采样率的影响,MongoDB的blog post成员在介绍此功能时表示,提高采样率将增加副本集的负载。我的理解是,除了主数据库之外,您可能已经具有读取首选项的查询,这会使您的辅助实例已经很忙。在这种情况下,这些镜像读取会影响辅助实例的性能。因此,您可能不想在这些辅助目录上再次执行所有主要读取(重复的术语“ secondary”和“ primary”真是令人讨厌!)。

具有SecondaryPreferred读取的故事是不同的,除非没有二级,否则您正在查询二级以获取数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。