Mongodb的可重试读操作

目录

重试读操作

需要条件

启用重读

支持可重试读的操作

不支持可重试读的操作

行为


重试读操作

连接mongodb进行读操作时,遇到网络或数据库集群的主节点切换导致的数据读问题。mongodb驱动自动尝试重新执行读操作。

需要条件

  • 数据库连接驱动支持mongodb4.2或以上版本。
  • 数据库服务器,需要3.6或以上版本。

启用重读

mongodb4.2或以上版本的驱动,默认允许可重试读。显示关闭可重试读。在数据库连接中设置retryReads=false。mongsh不支持可从试读操作。

支持可重试读的操作

复制代码
collection.aggregate
collection.count
collection.countDocument
collection.distinct
collection.estimatedDocumentCount
collection.find
database.aggregate
mongoClient.watch
mongoClient.listDatabases
database.listCollections
collection.listIndexes
某些数据库驱动还封装了一些重试读辅助方法或允许可重试读的方法。

不支持可重试读的操作

复制代码
db.collection.mapReduce()
getMore()
在database.runCommand中的读操作

行为

可重试读只能重试一次。能够帮忙检测网络问题或者复制集合主节点重新选择。无法支持长时间网络连接断开后的重试读操作。

在可重试读前,服务器选择读取节点按照原来命令指定的优先读取节点设置方式。如果数据库连接驱动无法选择一个使用原来的方式读取节点时,连接驱动会报错。在进行服务器选择时,驱动等待时间serverSelectionTimeoutMS。超过该设置时间后,可重试读不再连接数据库。

相关推荐
ruxshui11 分钟前
Python多线程环境下连接对象的线程安全管理规范
开发语言·数据库·python·sql
OceanBase数据库官方博客12 分钟前
客户案例|美的以OceanBase为基构建云中立数字化基座破局多云孤岛
数据库·oceanbase·分布式数据库
Mr_Xuhhh16 分钟前
MySQL数据表操作全解析:从创建到管理
数据库·sql·oracle
大模型玩家七七17 分钟前
向量数据库实战:从“看起来能用”到“真的能用”,中间隔着一堆坑
数据库·人工智能·python·深度学习·ai·oracle
OceanBase数据库官方博客19 分钟前
基于分层协作多智能体的数据库参数调优——OceanBase 校企研究
数据库·oceanbase·分布式数据库
2301_7634724622 分钟前
使用PyQt5创建现代化的桌面应用程序
jvm·数据库·python
爱学习的阿磊23 分钟前
Web开发与API
jvm·数据库·python
阳光九叶草LXGZXJ26 分钟前
达梦数据库-学习-50-分区表指定分区清理空洞率(交换分区方式)
linux·运维·数据库·sql·学习
Data_Journal27 分钟前
【无标题】
大数据·服务器·前端·数据库·人工智能
qq_1927798728 分钟前
Python多线程与多进程:如何选择?(GIL全局解释器锁详解)
jvm·数据库·python