mongodb c 插入資料效率

2021-07-08 11:03:21 字數 3122 閱讀 2600

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

return _client;}}

public static imongodatabase database

set

}public static imongocollectioncollection

set

}protected static imongoclient _client;

protected static imongodatabase _database;

protected static imongocollection_collection;

//測試效率,兩個方法用時比較

public async static void testmongo()

//一次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++)

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 string id

/// /// 名字

///

public string name

/// /// 手機號碼

///

public string moblie

/// /// 郵箱

///

public string email

/// /// 座機

///

public string tel

/// /// 傳真

///

public string fax

/// /// 身份證

///

public string identityid

/// /// 使用什麼註冊的

/// id --身份證 (只需要id身份證的資訊)

///

public string registertype

/// /// 會員卡號

///

public string cardno

/// /// 性別

///

public string ***

/// /// 生日

///

public string birthday

/// /// 位址

///

public string address

/// /// 郵編

///

public string zipcode

public string district2

public string district3

public string district4

/// /// 註冊時間

///

public string registerdate }}

mysql資料插入效率比較

做資料插入時,發現之前上班做哪些辦公系統壓根就沒考慮過資料庫效能這些,因為涉及的資料量小,時間和效率看不出來,可當資料量很大了,大到了每秒需要10000次插入時,這時就不得不考慮你的sql 語句了。當插入100條資料,能想到的資料插入方式 1 for迴圈100次,一次次插入資料。連線一次插入100次...

sqlite插入資料效率提公升解決方案

sqlite插入效率對比 建表 create table if not existstttable id integer primary key autoincrement,name varchar 100 筆者電腦配置 硬碟是250g三星ssd硬碟 cpu os 記憶體如下 理論 sqlite 插...

高效率批量插入上億資料

轉至 create table create table tmp test chas lee f01 varchar2 20 f02 number 10 not null,f03 varchar2 21 f04 varchar2 21 f05 number,f06 number 20 建立乙個臨時表...