为什么我的多螺纹嵌件比单螺纹嵌件性能更好?

2024-05-23

我调查了并发性 http://docs.mongodb.org/manual/faq/concurrency/#how-granular-are-locks-in-mongodb在 MongoDB 中,显然它使用了数据库级锁定系统。我认为这意味着插入同一数据库的多个线程的性能与插入数据库的单个线程的性能相似或更差。

我发现当我有 4 个线程同时插入数据库时​​,性能几乎翻倍(就插入/秒而言)。

性能变得更好有什么原因吗?我不明白为什么。

如果有帮助的话,我有一个线程不断从服务器接收数据包并将其插入队列中。我的 4 个线程不断地从该队列中出列并插入到数据库中。


当 MongoDB 中发生写入时,实际写入锁仅保留完成所需总时间的一小部分。

事实证明,写入 RAM 中的数据文件只需要微秒(微,而不是毫)。其余时间会发生“其他”事情 - 这就是为什么如果您有多个线程或少数线程,您将获得最佳性能 - 在大多数情况下,限制因素将是网络带宽或磁盘 IO 之类的东西或CPU(一旦你有足够的线程)而不是锁。

如果您有足够的线程进行写入mongod并且文档非常小,磁盘速度很快(用于将所有写入的数据刷新到磁盘)并且有足够的 RAM 来处理相关索引更新然后数据库锁定can成为写入吞吐量的限制因素,但通常不是成为瓶颈的第一或第二件事。

我鼓励您使用类似的工具mongostat, iostat以及其他系统监控资源,以了解实际瓶颈在哪里。如果您没有看到任何内容,那么您的应用程序没有足够快地向数据库投入工作以最大化其容量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的多螺纹嵌件比单螺纹嵌件性能更好? 的相关文章

  • 使用来自多个 kafka 主题的消息的最佳实践是什么?

    我需要消费来自不同卡夫卡主题的消息 我是否应该为每个主题创建不同的消费者实例 然后根据分区数量启动一个新的处理线程 或者 我应该从单个消费者实例订阅所有主题 并且应该启动不同的处理线程 感谢和问候 梅加 唯一的规则是 您必须考虑 Kafka
  • spring-data-mongodb 在重新水化对象时到底如何处理构造函数?

    我读过了http static springsource org spring data data mongo docs 1 1 0 RELEASE reference html mapping chapter http static sp
  • 进度条没有进展

    我有一个正在更新 sqlserver 中的表的程序 我有一个表单 我想显示其进度 进度条正在递增 但没有显示 我需要为此使用后台工作者吗 我正在做什么的例子 public void updateTable string tableName
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • Mongodb MapReduce 选择最新日期

    我似乎无法让我的 MapReduce 缩减功能正常工作 这是我的地图功能 function Map day Date UTC this TimeStamp getFullYear this TimeStamp getMonth this T
  • 临时表是线程安全的吗?

    我正在使用 SQL Server 2000 它的许多存储过程广泛使用临时表 数据库的流量很大 我担心创建和删除临时表的线程安全性 假设我有一个存储过程 它创建了一些临时表 它甚至可以将临时表连接到其他临时表等 并且还可以说两个用户同时执行存
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • MongoDB 过滤嵌套对象中的数组元素

    我有一个文件如下 id ObjectId 56423b2558cb340599108b35 test source member abc member xyz 我想过滤数组元素 xyz 并且我正在尝试以下查询 db coll find te
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 向无锁队列添加阻塞函数

    我有一个基于循环缓冲区的无锁多生产者 单消费者队列 到目前为止 它只有非阻塞push back and pop front 来电 现在我想添加这些调用的阻塞版本 但我想尽量减少这对使用非阻塞版本的代码性能的影响 也就是说 它不应该将它们变成
  • NestJs/Mongoose 中的自动递增序列

    我正在将 NodeJs 项目迁移到 NestJs 该项目使用 MongoDB 作为后端数据库 使用 Mongoose 作为 ODM 我当时用的是猫鼬序列 https github com ramiel mongoose sequence插件
  • 2 个数组/图像相乘的多线程性能 - 英特尔 IPP

    我正在使用英特尔 IPP 来进行 2 个图像 数组 的乘法 我使用的是 Intel Composer 2015 Update 6 附带的 Intel IPP 8 2 我创建了一个简单的函数来乘以太大的图像 整个项目已附后 见下文 我想看看使
  • 如何复制文件并具有取消复制的功能?

    我正在努力拥有program能够取消复制 因此我不能使用Microsoft VisualBasic FileIO FileSystem CopyFile 有一些包装用于CopyFileEx在网络上 例如here http msdn micr
  • 调用 Mongoose 插件内模式的静态方法

    我写了一个插件 可以执行以下操作 module exports function schema options schema statics customFunction function criteria Code 这是我的架构 var
  • 在 MongoDB 查询中,负限制是什么意思?

    我正在使用 Mongoid ruby gem 与 MongoDB 进行交互 当我尝试从查询中获取某些内容时 它会添加 limit 1 即负数 当我希望它只使用1 我尝试在控制台中执行相同的操作 但它没有更改返回的文档 负数限制是否意味着什么
  • Java-线程与CPU的关系

    我对多线程还很陌生 我正在开发一个项目 尝试在我的 Java 程序中使用 4 个 CPU 我想做类似的事情 int numProcessors Runtime getRuntime availableProcessors ExecutorS
  • 如何在 Meteor 应用程序之间共享 MongoDB 集合?

    我希望能够为我的项目提供一个管理应用程序和一个客户端应用程序 理想情况下 我希望能够拥有一个共享的 MongoDB 集合 我怎样才能做到这一点 我尝试在两个不同的应用程序中创建具有相同名称的集合 但发现 Meteor 会将数据分开 知道我能
  • 在 Haskell 中创建 100 万个线程需要多长时间?

    据我了解 Haskell 有绿色线程 但它们的重量有多轻 是否可以创建100万个线程 或者 100 000 个线程需要多长时间 from here http www reddit com r programming comments a4n
  • 使用 AJAX 或多线程加速页面加载

    我的页面有 5 个部分 每个部分大约需要 1 秒来渲染 Page Load RenderSection1 1 sec RenderSection2 1 sec RenderSection3 1 sec RenderSection4 1 se
  • mongodb 和 pymongo 文档大小 16Mb 限制

    我正在使用 Windows 上的 showIncludes 标志和 nix 上的 H 标志来分析构建中的包含内容 我正在用 python 脚本解析这些信息 包含的每个文件都变成一个对象 列出其子文件 它包含的文件 和祖先 包含该文件的包含路

随机推荐

  • 哪些中继对象必须实现“Node”?

    https facebook github io relay graphql objectidentification htm https facebook github io relay graphql objectidentificat
  • Bootstrap 选项卡在另一个页面上打开选项卡

    我有一个页面 上面有引导选项卡 它们链接到该页面上的正确内容区域 当您离开该页面时 我在顶部有相同的选项卡 我希望将他们带回上一页并打开右侧选项卡 这就是我的选项卡在外部页面上的样子 ul class nav nav tabs li a h
  • 使用 d3-geo-projection 命令行工具设置自定义投影

    我正在尝试使用 geoproject 在 geojson 文件上设置投影 具体来说 我正在尝试将投影设置为 BCalbers http spatialreference org ref epsg 3005 http spatialrefer
  • 如何在不使用注释的情况下创建 Spring 控制器?

    我正在学习 Spring Core 认证 我对这个问题有一些疑问 Controller注解有什么用 你怎样才能创建一个 没有注释的控制器 所以我知道 控制器注解表明特定类充当控制器的角色 这 控制器注解充当被注解类的构造型 表明其作用 调度
  • 如何屏蔽未接来电以在 Android 中阅读?

    我正在开发一个 Android 应用程序 它使用以下方法显示未接来电 String projection new String CallLog Calls NUMBER CallLog Calls TYPE CallLog Calls DU
  • tensorflow:检查标量布尔张量是否为 True

    我想使用占位符控制函数的执行 但不断收到错误 不允许使用 tf Tensor 作为 Python bool 这是产生此错误的代码 import tensorflow as tf def foo c if c print This is tr
  • 禁用 Windows 窗体中的关闭按钮

    我在互联网上找到了这段代码 但不确定如何使用它 我还需要在工作完成后重新启用它 请帮助 Private Const CP NOCLOSE BUTTON As Integer H200 Protected Overloads Override
  • 如何使用多个字符的字符串在 PowerShell 中“拆分”字符串?

    当在 PowerShell 中的字符串上使用 Split 运算符并尝试使用包含多个字符的字符串进行拆分时 PowerShell 会表现出奇怪的行为 它使用any字符串中要分割的字符数 例如 PS C Users username gt On
  • 从头开始构建 OLAP 解决方案时应该注意什么?

    我在一家运行基于 MS SQL 数据库服务器的软件产品的公司工作 多年来我已经用 PHP 开发了 20 30 个相当高级的报告 直接从数据库获取数据 这非常成功 人们对此感到高兴 但它有一些缺点 对于新的变化 它可能是相当开发密集型的 用户
  • 将 C 代码转换为 x86-64 汇编

    我正在尝试将 C 代码转换为 x86 64 我的目标是反转链表 传入的两个参数是 head ptr 和 offset to 以获取指针字段的地址 即指向列表中下一个节点的指针 据我了解 head ptr是通过rdi寄存器传入的 offset
  • 使用 jquery ajax 和 asp.net 处理程序上传文件

    我正在努力让它工作 但我在上传文件时遇到错误 ASPX
  • C++ std::vector 搜索值

    我正在尝试优化std vector 搜索 基于索引的迭代向量并返回与 搜索 条件匹配的元素 struct myObj int id char value std vector
  • EXPO:无法解析模块“./debugger”

    重新加载后 我的应用程序已停止加载 A 我已经尝试过模拟器和 2 个真实设备 android 和 ios 错误是 错误 无法解析模块 debugger ui debuggerWorker d9da4ed7来自 有时我会收到错误 无法找到实例
  • [程序名称].exe已停止工作

    我有一个基于 Framework 2 0 构建的 NET 应用程序 我已经为它构建了一个安装程序 并尝试在具有 3 5 的计算机上运行它 所有相关环境均在Windows 7上 该应用程序在我的开发机器上以 VS 调试模式完美运行 该机器也具
  • PHP 下载脚本输出损坏的文件

    我正在用 PHP 为我的 CMS 构建一个文件下载类 当时我注意到它以不同的编码格式输出文件 我尝试使用 readfile file get contents fread 但似乎都在做同样的事情 这就像与输出缓冲有关的东西 我使用脚本下载的
  • 使用 Beautifulsoup 的带有空格的类的正则表达式

    我发现方法 BeautifulSoup find 用空格分割类属性 在这种情况下 我无法使用正则表达式 如下面的代码所示 你能帮我找到所有 树孩子 元素的正确方法吗 import re from bs4 import BeautifulSo
  • 最佳实践:ASP.NET 中的 CSS 或主题?

    什么时候应该使用 ASP NET 主题 什么时候应该使用 CSS 使用其中一种相对于另一种有哪些优点或缺点 我建议使用 CSS 而不是主题 原因是在 CSS 中 您可以修改样式以使其适用于所有浏览器 您可以对主题做同样的事情 但微软的设计师
  • 如何通过在R闪亮循环中读取.csv文件来动态生成dataTableOutput?

    我有一个函数可以生成 n 个数据帧并将其作为 csv 文件保存在某个位置 并且该函数返回已保存 CSV 的文件名 我希望获取这些 csv 文件 使用以下命令读取它read csv 然后使用 renderUI 和 renderDataTabl
  • 如何在 ember.js 路由中显示模型的非 id 字段的字符串值?

    我有一个自定义字段 允许您过滤模型列表 在某些 ArrayController 上 PersonApp SearchField Ember TextField extend keyUp function e var search this
  • 为什么我的多螺纹嵌件比单螺纹嵌件性能更好?

    我调查了并发性 http docs mongodb org manual faq concurrency how granular are locks in mongodb在 MongoDB 中 显然它使用了数据库级锁定系统 我认为这意味着