【MongoDB实战】7.3 批量操作优化:BulkWrite - 指南

news/2026/1/26 15:00:15/文章来源:https://www.cnblogs.com/yangykaifa/p/19533502

文章目录

  • 7.3 批量操作优化:BulkWrite
    • 前置准备
      • 1. 环境要求
      • 2. 基础连接代码
    • 7.3.1 循环单条操作vs批量操作:性能差异对比
      • 核心差异
      • 实战性能对比(测试10000条插入)
      • 典型输出结果(参考)
      • 差异原因分析
    • 7.3.2 BulkWrite实战:批量插入、更新、删除组合操作
      • 核心语法
      • 实战:组合操作完整示例
      • 输出结果(参考)
      • 关键注意事项
    • 7.3.3 场景实战:百万级日志数据批量导入优化
      • 业务场景
      • 优化思路
      • 完整优化代码
      • 典型输出结果(参考)
      • 进一步优化建议
    • 7.3.4 核心总结
      • 扩展:不同驱动的BulkWrite语法(参考)

7.3 批量操作优化:BulkWrite

BulkWrite(批量写入)是MongoDB提供的核心批量操作接口,能够将插入、更新、删除等多个操作打包成一批发送到服务端,大幅减少客户端与服务端的网络往返次数(Round-Trip),相比循环单条操作可提升数倍甚至数十倍的性能。

  • 本节从性能对比、核心实战、百万级数据导入优化三个维度,全面讲解BulkWrite的使用与优化思路。

前置准备

1. 环境要求

  • MongoDB版本:3.2+(BulkWrite基础支持),推荐4.4+(性能更优)
  • 驱动:以Python pymongo(3.12+)为例(Node.js/Java驱动语法逻辑一致)
  • 安装依赖:pip install pymongo python-dotenv

2. 基础连接代码

from pymongo import MongoClient, InsertOne, UpdateOne, DeleteOne
from pymongo.errors import BulkWriteError
import time
import random
import string
# 1. 连接MongoDB(本地/远程)
client = MongoClient("mongodb://localhost:27017/")
# 2. 选择数据库和集合
db = client["test_db"]
collection = db["bulk_demo"]
# 清空测试集合(仅测试用)
collection.delete_many({
})

在这里插入图片描述


7.3.1 循环单条操作vs批量操作:性能差异对比

核心差异

操作类型网络往返次数性能特点适用场景
循环单条操作N次(N=操作数)网络开销大、吞吐量低少量操作(<100)
BulkWrite批量1次(分块时少量)网络开销极小、吞吐量高大量操作(≥100)

实战性能对比(测试10000条插入)

from pymongo import MongoClient, InsertOne, UpdateOne, DeleteOne
from pymongo.errors import BulkWriteError
import time
import random
import string
# 1. 连接MongoDB(本地/远程)
client = MongoClient("mongodb://localhost:27017/")
# 2. 选择数据库和集合
db = client["test_db"]
collection = db["bulk_demo"]
# 清空测试集合(仅测试用)
collection.delete_many({
})
# 生成测试数据(随机字符串)
def generate_random_str(length=10):
return ''.join(random.choice(string.ascii_letters) for _ in range(length))
# 测试数据量
TEST_COUNT = 10000
test_data = [{
"name": generate_random_str(), "age": random.randint(18, 60)} for _ in range(TEST_COUNT)]
# ========== 测试1:循环单条插入 ==========
start_time = time.time()
for doc in test_data:
collection.insert_one(doc)
single_cost = time.time() - start_time
print(f"循环单条插入{
TEST_COUNT}条耗时:{
single_cost:.2f}秒")
# 清空集合,准备批量测试
collection.delete_many({
})
# ========== 测试2:BulkWrite批量插入 ==========
start_time = time.time()
# 构造批量插入操作列表
bulk_operations = [InsertOne(doc) for doc in test_data]
# 执行批量操作
result = collection.bulk_write(bulk_operations)
b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1219495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高校科研新利器:Live Avatar学术应用场景探索

高校科研新利器&#xff1a;Live Avatar学术应用场景探索 数字人技术正从娱乐和商业应用快速渗透到高等教育与科研领域。当高校实验室面对高昂的数字人定制成本、复杂的模型训练流程和漫长的开发周期时&#xff0c;一个真正为学术场景量身打造的开源方案显得尤为珍贵。Live Av…

DC-DC电路电源走线:宽度与电流匹配项目应用

以下是对您提供的技术博文进行 深度润色与结构重构后的专业级工程内容 。全文已彻底去除AI生成痕迹&#xff0c;采用资深硬件工程师口吻撰写&#xff0c;语言精准、逻辑严密、案例真实&#xff0c;兼具教学性与实战指导价值。所有技术细节均严格基于IPC标准、实测数据与一线项…

零基础玩转Unsloth:5步搞定大模型训练环境

零基础玩转Unsloth&#xff1a;5步搞定大模型训练环境 你是不是也遇到过这样的困扰&#xff1a;想微调一个大模型&#xff0c;结果光是装环境就卡了三天&#xff1f;CUDA版本对不上、PyTorch冲突、xformers报错、显存爆满……最后连第一步都没迈出去&#xff0c;电脑风扇已经唱…

2026年四川木门/隔音门/隔音木门/静音木门/实木门行业选型指南:头部企业解析与趋势预判

一、行业变革临界点:隔声能力成企业核心生存技能 当前隔音门行业正处于“技术迭代与标准升级”双轮驱动的关键变革期。随着《建筑隔声设计标准》(GB 50118-2023修订版)强制落地,公共建筑隔音门计权隔声量需达40dB以…

PyTorch-2.x部署教程:使用tmux保持长时间训练任务

PyTorch-2.x部署教程&#xff1a;使用tmux保持长时间训练任务 1. 为什么需要tmux来跑PyTorch训练任务 你有没有遇到过这样的情况&#xff1a; 深夜启动一个需要跑12小时的模型训练&#xff0c;刚合上笔记本盖子&#xff0c;SSH连接就断了&#xff0c;终端一黑&#xff0c;训练…

led灯珠品牌在家居照明灯具中的应用实战案例

以下是对您提供的博文进行 深度润色与工程化重构后的版本 。整体遵循如下优化原则&#xff1a; ✅ 去AI痕迹 &#xff1a;彻底摒弃模板化表达、空洞术语堆砌和机械式结构&#xff0c;代之以真实项目语境下的技术叙事&#xff1b; ✅ 强化人设感 &#xff1a;以一位有12…

OCR误识别率太高?后处理规则过滤实战技巧

OCR误识别率太高&#xff1f;后处理规则过滤实战技巧 OCR技术在实际落地中&#xff0c;常常面临一个让人头疼的问题&#xff1a;模型检测和识别结果看似完整&#xff0c;但细看却错字连篇、标点混乱、格式错乱。比如把“100%原装正品”识别成“100%原装止品”&#xff0c;把“…

PyTorch镜像中的CUDA版本适配问题全解析(支持30/40/A800)

PyTorch镜像中的CUDA版本适配问题全解析&#xff08;支持30/40/A800&#xff09; 在深度学习工程实践中&#xff0c;一个看似简单却常被忽视的痛点反复出现&#xff1a;明明显卡型号很新&#xff0c;nvidia-smi显示驱动正常&#xff0c;PyTorch也成功安装&#xff0c;但一运行…

2025四川高中复读学校口碑排行,这些学校值得一看!实验中学/学校/中学/高中复读学校,高中复读学校公司推荐排行榜

随着高考竞争日益激烈与升学路径的多元化,高中复读已成为众多学子调整方向、追求更高目标的重要选择。四川省作为教育大省,复读市场需求旺盛,各类复读学校林立,其教学质量、管理模式与升学成果参差不齐,给家长和学…

03_01_服务作用域

03_01_服务作用域所有的子容器并不是父子关系,都是平级的, 依赖注入系统只有两种容器,只有根容器和子容器,没有孙容器 在子容器的眼里,是没有父容器的,只有根容器作用域--》确定容器的边界 asp.netcore每一个请求…

西安本地老字号宝宝起名机构哪家靠谱指南

对西安准父母而言,给宝宝起一个兼具文化底蕴与美好寓意的名字,是开启育儿之路的重要仪式。但市面上起名机构良莠不齐,如何筛选靠谱机构成为家长难题。名字不仅是代号,更承载着对孩子一生的期许,选对专业机构,才能…

温度对蜂鸣器性能影响:材料特性原理讲解

以下是对您提供的博文《温度对蜂鸣器性能影响&#xff1a;材料特性原理与工程应对策略》的 深度润色与专业重构版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹 &#xff1a;语言自然、节奏张弛有度&#xff0c;融合工程师口吻、一线调试经验与教学式…

低噪声电路设计中的PCB布局规则解析

以下是对您提供的博文《低噪声电路设计中的PCB布局规则解析》进行 深度润色与专业重构后的版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底消除AI生成痕迹&#xff0c;语言自然、老练、有工程师“现场感”&#xff1b; ✅ 所有模块有机融合&#xff0c;摒弃刻板标…

arm64-v8a上部署TensorFlow Lite模型操作指南

以下是对您提供的博文内容进行深度润色与结构重构后的技术文章。我以一位深耕嵌入式 AI 部署多年的工程师视角&#xff0c;彻底摒弃模板化表达、AI腔调和教科书式分段&#xff0c;转而采用真实项目中边踩坑边总结的口吻&#xff0c;融合一线调试经验、硬件底层洞察与 Android 工…

聊聊深圳离婚律所 推荐一下离婚律所电话是多少

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家婚姻家事法律服务标杆律所,为有离婚等家事法律需求的当事人提供客观依据,助力精准匹配适配的专业服务伙伴。 TOP1 推荐:家理(深圳)律师事务所 推荐指数:…

想知道江苏联翩实力怎么样?其石英制品性价比值得了解

在工业制造领域,优质的石英制品是高要求场景不可或缺的核心辅材,关乎生产效率与产品质量。面对市场上众多石英制品供应商,如何抉择?以下依据不同类型,为你推荐5家靠谱的石英制品公司。 一、定制型 江苏联翩新材料…

讲讲上海地区高速切捆条机价格,盐城远诚机械费用多少可了解

随着工业制造领域智能化升级的加速,企业对裁切设备的效率、精度和适配性要求越来越高,高速切捆条机作为服装辅料、反光材料、箱包制造等行业的核心生产设备,其供应商的选择直接影响企业的生产效率与产品品质。在市场…

运行命令就这几行!Qwen-Image-Edit-2511本地部署超简单

运行命令就这几行&#xff01;Qwen-Image-Edit-2511本地部署超简单 你是不是也经历过这样的时刻&#xff1a;看到一个功能惊艳的AI图像编辑工具&#xff0c;点开文档——先装CUDA、再配PyTorch版本、接着下载十几个GB模型权重、最后还要手动改config文件……还没开始用&#x…

unet image Face Fusion界面汉化成功?蓝紫渐变标题区体验

unet image Face Fusion界面汉化成功&#xff1f;蓝紫渐变标题区体验 1. 这不是普通换脸工具&#xff0c;而是一次本地化体验升级 你有没有试过打开一个AI人脸融合工具&#xff0c;结果满屏英文参数、按钮名称和提示信息&#xff0c;光是搞懂“Source Image”和“Target Imag…

Qwen3-0.6B模型调用全解析:适合小白的图文教程

Qwen3-0.6B模型调用全解析&#xff1a;适合小白的图文教程 1. 为什么0.6B的小模型值得你花10分钟上手&#xff1f; 你可能刚看到“Qwen3-0.6B”这个名称时会想&#xff1a;才0.6B参数&#xff1f;现在动辄7B、14B的模型都快成标配了&#xff0c;这小家伙能干啥&#xff1f; 别…