MongoDB MS-SQL 效能測試 MongoDB MS-SQL 效能測試
  .NET、  NO-SQL       ez      2013-01-25

為了清楚的了解NO-SQL和SQL的效能差異,所以進行了寫入及讀取的效能測試,測試用的電腦則為我的筆電,規格如下:

CPU:Intel Core i7-2630QM

RAM:8GB

OS:Windows 7 Home Premium

HD:Memoright SSD 240G

測試結果可以發現差異非常大喔!MongoDB比MS-SQL速度快上10倍,不過還是需要看個人需求選擇適當的資料庫,以下提供參考。

MongoDB 測試結果:

以下為 MongoDB 測試用的程式碼:

int RunNum = 100000;
var mongo = new Mongo("mongodb://127.0.0.1");
mongo.Connect();
var TEST_DB = mongo.GetDatabase("TEST_DB");
var TEST_TABLE = TEST_DB.GetCollection("TEST");
Stopwatch sw = new Stopwatch();
//寫入資料
sw.Reset();
sw.Start();
for (int i = 0; i < RunNum; i++)
{
    TEST_TABLE.Insert(new Document() { { "ID", i }, { "City", "Taiwan" } });
}
sw.Stop();
Console.WriteLine();
Console.WriteLine("MongoDB 寫入 " + RunNum.ToString() + " 次時間:" + sw.ElapsedMilliseconds.ToString() + "/ms");
//唯一索引           
TEST_TABLE.MetaData.CreateIndex(new Document() { { "ID", 1 } }, true);
System.Threading.Thread.Sleep(10000);
//讀取資料
sw.Reset();
sw.Start();
for (int i = 0; i < RunNum; i++)
{
    var city = TEST_TABLE.FindOne(new Document() { { "ID", i } })["City"];
}
sw.Stop();
Console.WriteLine();
Console.WriteLine("MongoDB 讀取 " + RunNum.ToString() + " 次時間:" + sw.ElapsedMilliseconds.ToString() + "/ms");

MS-SQL 測試結果:

以下為 MS-SQL 測試用的程式碼:

int RunNum = 100000;
Stopwatch sw = new Stopwatch();
SqlConnection con = new SqlConnection(String.Format("Data Source={0};Initial Catalog={1};Persist Security Info={2};User ID={3};Password={4}", "127.0.0.1", "TEST", "True", "TEST", "TEST"));
con.Open();
//寫入資料
sw.Reset();
sw.Start();
for (int i = 0; i < RunNum; i++)
{
    SqlCommand SQL_Insert = new SqlCommand("Insert Into TEST (\"ID\",\"City\") values (" + i.ToString() + ",'Taiwan')", con);
    SQL_Insert.ExecuteNonQuery();
    SQL_Insert.Dispose();
}
sw.Stop();
Console.WriteLine();
Console.WriteLine("MS-SQL 寫入 " + RunNum.ToString() + " 次時間:" + sw.ElapsedMilliseconds.ToString() + "/ms");
//讀取資料
sw.Reset();
sw.Start();
for (int i = 0; i < RunNum; i++)
{
    DataSet DS = new DataSet();
    SqlDataAdapter DT = new SqlDataAdapter(new SqlCommand("SELECT * FROM TEST WHERE ID = " + i.ToString(), con));
    DT.Fill(DS);
    DT.Dispose();
    string city = DS.Tables[0].Rows[0]["City"].ToString();
}
sw.Stop();
Console.WriteLine();
Console.WriteLine("MS-SQL 讀取 " + RunNum.ToString() + " 次時間:" + sw.ElapsedMilliseconds.ToString() + "/ms");
con.Close();
con.Dispose();
con = null;

標籤:   .NET、  NO-SQL

我要留言