当前位置: 首页 > 网络应用技术

MongoDB与MySQL,哪种效率更高?

时间:2023-03-08 01:24:03 网络应用技术

  本文主要介绍了batch和non -batch比较操作的bulkwrite()方法的使用。BulkWrite()的一部分。

  测试环境:Win7旗舰版本,16G内存,i3处理器,mongodb3.0.2,mysql5.0

  MongoDB的操作分为读取操作和写操作。读取操作包含查询操作。写操作包含删除,插入,替换和更新的多个操作。MongoDB提供了客户以Bull执行令状操作,即批次写入操作。在Java驱动程序中此方法签名:

  此方法需要列表的集合,并且该集合中的元素类型是WritModel。它表示可以在批处理中使用的基本模型。它具有以下子类DeleteManyModel,DeleteneModel,InsertoneModel,repenterOneModel,updateManyModel,updateNemodel,updateNemodel,并且可以看到它与删除,插入,替换和更新的几个操作相对应。该方法返回了一个成功的bulkwritersort witter witch witder of bulkwriteres witter witder batch batch batch batch batch batch batch batch batch batch操作结果,并封装操作结果的状态信息,例如插入,更新和删除记录。

  (1)批次插入

  代码如下。此方法接收一个集合参数,其中包含要插入的文档对象,遍历该集合,使用构造插入编码对象的文档,每个insertoneModel实例代表插入单个文档的操作,然后将此实例添加到列表集合中。()方法,所有插入操作的列表集合将传递以完成批处理插入。

  测试:以下由主函数测试。首先,构造100,000个产品实体对象,使用工具类将其转换为JSON字符串,然后将其解析为文档对象,将其保存到列表集合中,然后调用上述方法以测试100,000个对象的插入时间。

  结果:1560毫秒,多个测试基本约为1.5秒

  (2)一个一个插入

  该方法之后是非分数插入100,000个数据比较。该方法如下:

  测试:100,000个数据

  结果:12068毫秒,差距很大。可以看出,MongoDB批处理插入效率比数据插入效率提高了很多。

  补充:

  Mongocollection和BulkWrite()方法的插入方法是等效的。测试时间相似,没有更多的地图发布。

  (1),批次删除

  掌握批处理插入,批处理删除是绘画scoop。构造删除模型需要一个BSON类型参数来表示删除操作。这是BSON类的子类文档。此处的删除条件使用文档的字段。将文档插入数据库后自动生成此字段。在插入数据库之前,它为空。如果其他条件(例如prouctiDID),则将文档插入文档插入问题之后。

  由于数据数据的量增加,因此搜索的时间越多,索引的添加是提高搜索效率,然后加快删除效率。此外,值得一提的是,删除词架指示的是删除效率。删除了匹配条件的记录,并且DeleteManyModel表示匹配条件删除的所有记录。要防止一次删除多个记录,请在此处使用DeleteOneModel,以确保仅删除一个记录。由于_id是唯一的,因此无法匹配多个记录。

  测试:100,000个数据

  结果:2251 Millise

  (2)一一删除

  让我们看一下非批量删除

  测试:100,000个数据

  结果:12765毫秒,远低于批处理删除效率

  (1)批次更新

  让我们看一下批处理更新,对UpdateOneModel和UpdateManyModel进行划分。区别在于以前的更新条件的记录,后者更新了匹配条件的所有记录。对于替换,替换操作也归因于更新。现在,它以updateNemodel为示例来解释。updateNemodel构造方法接收3个参数。第一个是查询条件,第二个参数是更新内容,第三个参数是可选的updateOptions。它将自动帮助您新的,而无需填充。匹配查询条件时的操作,其UPSER属性值默认为false,而无需完成。如果是的,则将新文档插入数据库。这个新文档是查询文档和更新文档的组合,但是如果它是替换操作,则是替换操作。此新文档是该文档的替换。

  这里是否有疑问:这与与查询条件匹配之后的情况不一样吗?区别在于_id字段,当查询条件不匹配时插入的新文档的新文档是新的,并成功地执行了替换操作,_id是原始的旧操作。

  测试:100,000个数据

  结果:3198 Millise

  (2)一一更新

  与非分批更新相比

  测试:100,000个数据

  结果:13979毫秒,远低于批处理更新效率

  BulkWrite()方法可以处理不同类型的写作操作。代码如下:

  注意:updatemany(),deletemany()的两种方法与insertmany()不同。他们两个不是批处理操作,而是表示所有更新(删除)匹配条件的数据。

  (1),批处理处理插入

  像MongoDB一样,它也被插入产品对象。代码如下

  JDBC的默认自动提交交易。请记住在获得连接后添加以下行并自动关闭交易。

  测试:100,000个数据

  结果:7389毫秒,多个测试基本约为7秒

  (2)一个一个插入

  让我们看一下MySQL一个一个一个插入。代码如下:

  测试:100,000个记录

  结果:8921毫秒,基本上比批次慢1秒。

  (1),批处理过程删除

  删除的条件是造成生产物的地方。构建桌子时没有主键。删除异常缓慢。检查了很长时间后,我不知道为什么。要添加主键,默认情况下,主键具有索引,所有键都可以更快地匹配记录。

  测试:100,000个数据

  结果:7936毫秒

  (2)一一删除

  代码显示如下

  测试:100,000个数据

  结果:8752毫秒,比批处理处理慢了一秒钟

  (1),批处理过程更新

  代码显示如下

  测试:100,000个数据

  结果:8611毫秒

  (2)一一更新

  代码显示如下

  测试:100,000个数据

  结果:9430毫秒,比批处理处理更新慢1秒

  本文主要是为了介绍BulkWriite()方法的使用,即MongoDB的批处理写作操作。通过实验,我们可以看到MongoDB使用blulwrite()方法编写大量数据。本文还介绍了几个MySQL写作操作的批处理和非批量比较。可以看出,他们的批处理处理方法比非批处理处理更快,但并不像MongoDB那样明显。

  为了比较MongoDB和MySQL,在批处理操作下,MongoDB插入,删除和更新比MySQL快。在非批量操作下,mongoDB插入,删除和更新比mysql慢。当然,这只是一个初步结论。文章中没有不同的数据比较,例如100、1,000、100,000或更大,并监视CPU内存的使用。那些有兴趣的人可以尝试。

  原始链接:https://blog.csdn.net/u014513883/article/details/49365987