c#操作mongodb插入数据效率的示例分析
发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,这篇文章主要介绍了c#操作mongodb插入数据效率的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mongodb的数据插入速
千家信息网最后更新 2024年09月30日c#操作mongodb插入数据效率的示例分析
这篇文章主要介绍了c#操作mongodb插入数据效率的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
mongodb的数据插入速度是其一个亮点,同样的10000条数据,插入的速度要比Mysql和sqlserver都要快,当然这也是要看使用者怎么个使用法,你代码如果10000次写入使用10000次连接,那也是比不过其他数据库使用事务一次性提交的速度的。
同样,mongo也提供的一次性插入巨量数据的方法,因为mongodb没有事务这回事,所以在在C#驱动里,具体方法是InsertManyAsync()一次性插入多个文档。与之对应的是InsertOneAsync,这个是一次插入一个文档;
InsertManyAsync()这个方法带入的参数只要是实现了IEnumerable接口的类型就可以,所以可是list<>,这样的数据类型;
同样的10000次插入,两个方法时间差别很大。如图:
使用一次性插入多个文档方法,插入10000条耗时仅1.3秒,分成10000次插入,耗时19.9秒。区别大了个去。同样,前面我做过使用mysql插入10000条记录,要用4秒多,可见,这mongodb插入速度不是吹 的。
具体的代码如下,贴上:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MongoDB.Bson;using MongoDB.Driver;using System.Diagnostics;namespace sqltomongo{ public class MongoHelp { private static IMongoClient client { get { if (null == _client) { _client = new MongoClient("mongodb://127.0.0.1:27017"); } return _client; } } public static IMongoDatabase database { get { _database = client.GetDatabase("HotelPersonInfo"); return _database; } set { _database = value; } } public static IMongoCollectioncollection { get { return _collection; } set { _collection = value; } } protected static IMongoClient _client; protected static IMongoDatabase _database; protected static IMongoCollection _collection; //测试效率,两个方法用时比较 public async static void TestMongo() { //自定义的对象 RoomInfo roomdata = new RoomInfo(); List docunemts = new List (); collection = database.GetCollection ("HotelPersonInfo"); Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 1; i < 10000; i++) { //mongo对用户自定义的对象扩展了tobasonDocument这个方法,可直接用 var roomdatadocument = new BsonDocument(roomdata.ToBsonDocument()); docunemts.Add(roomdatadocument); } //一次10000条 //这方法 查看api手册,只要实现了IEnumerable借口的类型就都行 await collection.InsertManyAsync(docunemts); sw.Stop(); TimeSpan ts2 =sw.Elapsed; Console.WriteLine("total is " + ts2.TotalMilliseconds); ///一次次插 10000次 Stopwatch sw2 = new Stopwatch(); sw2.Start(); for (int i = 1; i < 10000; i++) { var roomdatadocument = new BsonDocument(roomdata.ToBsonDocument()); await collection.InsertOneAsync(roomdatadocument); } sw2.Stop(); TimeSpan ts22 = sw2.Elapsed; Console.WriteLine("total is " + ts22.TotalMilliseconds); // await collection.InsertOneAsync(roomdatadocument); //collection = database.GetCollection ("HotelPersonInfo"); // collection.InsertOneAsync(roomdatadocument); } }}
里面使用了一个自定义的对象:
代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MongoDB.Bson;namespace sqltomongo{ public class RoomInfo { public RoomInfo() { // id = "test"; Name = "nafd"; Moblie = "123456"; EMail = "dd@qq.com"; Tel = "010123"; Fax = "0755-001"; IdentityId = "616112323231"; RegisterType = "tid"; CardNo = "cardno"; Sex = "男"; Birthday = "1999"; Address = "china beijing"; ZipCode = "519000"; RegisterDate = "2015-03-03"; District2 = "District2"; District3 = "District3"; District4 = "District4"; } // public string id { get; set; } ////// 名字 /// public string Name { get; set; } ////// 手机号码 /// public string Moblie { get; set; } ////// 邮箱 /// public string EMail {get;set;} ////// 座机 /// public string Tel { get; set; } ////// 传真 /// public string Fax { get; set; } ////// 身份证 /// public string IdentityId { get; set; } ////// 使用什么注册的 /// ID --身份证 (只需要id身份证的信息) /// public string RegisterType { get; set; } ////// 会员卡号 /// public string CardNo { get; set; } ////// 性别 /// public string Sex { get; set; } ////// 生日 /// public string Birthday { get; set; } ////// 地址 /// public string Address { get; set; } ////// 邮编 /// public string ZipCode { get; set; } public string District2 { get; set; } public string District3 { get; set; } public string District4 { get; set; } ////// 注册时间 /// public string RegisterDate { get; set; } }}
感谢你能够认真阅读完这篇文章,希望小编分享的"c#操作mongodb插入数据效率的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
数据
方法
一次性
篇文章
速度
效率
代码
对象
文档
类型
身份
身份证
示例
c#
分析
两个
事务
多个
时间
很大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
遂宁软件开发工程师
电脑版捕鱼达人软件开发
马鞍山市奇妙软件开发
第二届成都网络安全大会
图书馆购买的中文数据库有
俄罗斯联邦法律数据库
奇酷互联网络科技 陈荣
哪个服务器的稀有肉不值钱
我的世界网易服务器死亡榜
网络安全书写内容
软件开发的就业
计算机网络安全随堂练习
搭建mqtt物联网服务器
软件开发部绩效考核细则
投标软件开发团队人员要求
黑岩数据库
安卓app如何查看数据库
小学生网络安全小口诀
每个人远程连接服务器的分辨率
行情数据库 设计
滦南天气预报软件开发
办公系统软件开发费用是多少
宿州 软件开发招聘
做影视网站推荐什么服务器
山东机械软件开发平台
国内双线服务器
淑女花网络技术服务中心
数据库管理的核心对象
pb dw 断开数据库
科研单位网络安全等级