久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

c#操作mongodb插入數(shù)據(jù)效率的示例分析

共計(jì) 4108 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。

這篇文章主要介紹了 c# 操作 mongodb 插入數(shù)據(jù)效率的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

mongodb 的數(shù)據(jù)插入速度是其一個(gè)亮點(diǎn),同樣的 10000 條數(shù)據(jù),插入的速度要比 Mysql 和 sqlserver 都要快,當(dāng)然這也是要看使用者怎么個(gè)使用法,你代碼如果 10000 次寫(xiě)入使用 10000 次連接,那也是比不過(guò)其他數(shù)據(jù)庫(kù)使用事務(wù)一次性提交的速度的。

同樣,mongo 也提供的一次性插入巨量數(shù)據(jù)的方法,因?yàn)?mongodb 沒(méi)有事務(wù)這回事,所以在在 C# 驅(qū)動(dòng)里,具體方法是 InsertManyAsync()一次性插入多個(gè)文檔。與之對(duì)應(yīng)的是 InsertOneAsync,這個(gè)是一次插入一個(gè)文檔;

InsertManyAsync()這個(gè)方法帶入的參數(shù)只要是實(shí)現(xiàn)了 IEnumerable 接口的類(lèi)型就可以,所以可是 list , 這樣的數(shù)據(jù)類(lèi)型;

同樣的 10000 次插入,兩個(gè)方法時(shí)間差別很大。如圖:

使用一次性插入多個(gè)文檔方法,插入 10000 條耗時(shí)僅 1.3 秒,分成 10000 次插入,耗時(shí) 19.9 秒。區(qū)別大了個(gè)去。同樣,前面我做過(guò)使用 mysql 插入 10000 條記錄,要用 4 秒多,可見(jiàn),這 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 IMongoCollection BsonDocument  collection
 {
 get {
 return _collection;
 }
 set {
 _collection = value;
 }
 }
 protected static IMongoClient _client;
 protected static IMongoDatabase _database;
 protected static IMongoCollection BsonDocument  _collection;
 // 測(cè)試效率,兩個(gè)方法用時(shí)比較
 public async static void TestMongo()
 {
 // 自定義的對(duì)象
 RoomInfo roomdata = new RoomInfo();
 List BsonDocument  docunemts = new List BsonDocument 
 collection = database.GetCollection BsonDocument ( HotelPersonInfo 
 Stopwatch sw = new Stopwatch();
 sw.Start();
 for (int i = 1; i   10000; i++)
 {
 //mongo 對(duì)用戶(hù)自定義的對(duì)象擴(kuò)展了 tobasonDocument 這個(gè)方法,可直接用
 var roomdatadocument = new BsonDocument(roomdata.ToBsonDocument());
 docunemts.Add(roomdatadocument);
 }
 // 一次 10000 條
 // 這方法   查看 api 手冊(cè),只要實(shí)現(xiàn)了 IEnumerable 借口的類(lèi)型就都行
 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 BsonDocument ( HotelPersonInfo 
 // collection.InsertOneAsync(roomdatadocument);
 }
 }
}

里面使用了一個(gè)自定義的對(duì)象:

代碼如下:

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; }
 ///  summary 
 ///  名字
 ///  /summary 
 public string Name { get; set; } 
 ///  summary 
 ///  手機(jī)號(hào)碼
 ///  /summary 
 public string Moblie { get; set; }
 ///  summary 
 ///  郵箱
 ///  /summary 
 public string EMail {get;set;}
 ///  summary 
 ///  座機(jī)
 ///  /summary 
 public string Tel { get; set; }
 ///  summary 
 ///  傳真
 ///  /summary 
 public string Fax { get; set; }
 ///  summary 
 ///  身份證
 ///  /summary 
 public string IdentityId { get; set; }
 ///  summary 
 ///  使用什么注冊(cè)的
 /// ID -- 身份證  (只需要 id 身份證的信息) ///  /summary 
 public string RegisterType { get; set; }
 ///  summary 
 ///  會(huì)員卡號(hào)
 ///  /summary 
 public string CardNo { get; set; }
 ///  summary 
 ///  性別
 ///  /summary 
 public string Sex { get; set; }
 ///  summary 
 ///  生日
 ///  /summary 
 public string Birthday { get; set; }
 ///  summary 
 ///  地址
 ///  /summary 
 public string Address { get; set; }
 ///  summary 
 ///  郵編
 ///  /summary 
 public string ZipCode { get; set; }
 public string District2 { get; set; }
 public string District3 { get; set; }
 public string District4 { get; set; }
 ///  summary 
 ///  注冊(cè)時(shí)間  
 ///  /summary 
 public string RegisterDate { get; set; }
 }
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“c# 操作 mongodb 插入數(shù)據(jù)效率的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計(jì)4108字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 调兵山市| 临颍县| 灯塔市| 福安市| 毕节市| 神木县| 夏河县| 舟曲县| 蓬安县| 衡阳市| 扎鲁特旗| 大洼县| 绥化市| 枣庄市| 宕昌县| 天祝| 徐水县| 闻喜县| 杭州市| 南和县| 萨迦县| 双峰县| 绥中县| 随州市| 仁布县| 彩票| 赣榆县| 新巴尔虎右旗| 枝江市| 务川| 河源市| 景泰县| 工布江达县| 平安县| 罗源县| 车致| 于都县| 长垣县| 应城市| 乐平市| 南昌县|