環境準備
準備兩臺伺服器環境,配置相同,分別安裝Centos7,mysql8.0,docker mysql 8.0
準備測試程式碼
public class Chat
{
public static long Count = 0;
public Chat() {
}
public static void AddChat()
{
var context = new IM.Data.MySQLContext();
while (true)
{
var chat = new IM.Data.ChatRecordTb
{
UserId = "F62E97C5-98E0-4473-B933-08D7787382C",
UserHeadPortrait = "http://www.baidu.com/2023-3-13/952824521354142234544.jpg",
UserName = "測試使用者",
TextType = 1,
ChatText = "*****************很長的文字**********************",
FileSrc = "",
ThumbnailSrc = "",
CreateTime = DateTime.Now
};
context.ChatRecordTb.Add(chat);
context.SaveChanges();
context.ChatRecordTb.Entry(chat).State = EntityState.Detached;
//+1
Interlocked.Increment(ref Count);
}
}
}
使用ORM框架(EF)進行資料庫操作,ORM部分就不展示,在控制檯進行呼叫
//多執行緒新增,10個執行緒
for (var i = 0; i < 10; i++)
{
var task = new Task(ConsoleApp1.Chat.AddChat);
task.Start();
}
while (true)
{
var startCount = ConsoleApp1.Chat.Count;
System.Threading.Thread.Sleep(10000);
var endCount = ConsoleApp1.Chat.Count;
Console.WriteLine($"10秒一共寫入{endCount - startCount}行條資料,總行數:{endCount}");
}
祼機mysql效能
mysql的效能是隨著配置不同,逞現不同效能,這是的效能是指當前配置下的效能。
應該是硬碟IO達到瓶頸,執行緒多與少己經沒不能引起寫入效能的大性幅提升,平均效能大概在2000條/S
Docker mysql 效能
相同的程式碼在docker下的mysql 相比之下似乎穩定很多, 無論是控制檯資料統計,ESXI的資料統計,都可以看到docker下的mysql 很順滑,同樣CPU消耗明顯略高,資料庫寫入速度大概為2500條/S
結尾
兩者的mysql版本相同均為:8.0.32,相比之下感覺dokcer下寫入更穩定,效能之間似乎沒有什麼明顯的區別。