c#操作mongodb插入数据效率的示例分析
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍了c#操作mongodb插入数据效率的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mongodb的数据插入速
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
央媒全国网络安全员
1.10.2小游戏服务器
政法委个人网络安全保密协议
网络安全与禁毒教育教案
中国电信通信网络安全监督局
网络安全技术与工程好就业吗
服务器杀除木马的方法
网络安全面临着新的挑战
中国网络安全基础知识
上海科技软件开发有限公司
网络技术在银行中的应用
安徽软件开发定制平台
达梦数据库数据泵
国家网络安全公司广西分部
官渡区品牌软件开发
一年经验软件开发工资多少
徐州哇哦互联网科技有限公司
联通apn哪个服务器
天阔服务器默认管理ip
碳排放因子数据库从哪里找
中国的DNS服务器属于哪个公司
军营人防技防网络安全
数据库的中间价
日语自我介绍 软件开发
无锡互联网智能科技软件
剑履山河服务器几点能上
湖南会计软件开发商家
深圳软件开发公司官网
软件开发外包奖金分配方案
计算机网络技术课程ppt