我發(fā)現(xiàn)與插入相同行數(shù)的多線程解決方案相比,按順序?qū)?shù)據(jù)插入數(shù)據(jù)庫(kù)的速度非常慢。在我的順序方法中插入 50000 行大約需要 4 分鐘,而并行版本只需要大約 10 秒。我使用https://github.com/go-sql-driver/mysql驅(qū)動(dòng)程序。對(duì)于數(shù)據(jù)庫(kù),我只是采用了最新版本的 Windows 版 XAMPP,并使用標(biāo)準(zhǔn)配置的 MySQL 數(shù)據(jù)庫(kù)。順序版本:for i := 0; i < 50000; i++ { _, err2 := db.Exec("insert into testtable (num, text1, text2) values (?, ?, ?)", i, "txt1", "txt2") if err2 != nil { fmt.Println(err2) }}并行版本:for i := 0; i < 50; i++ { wg.Add(1) go func() { defer wg.Done() for j := 0; j < 1000; j++ { _, err2 := db.Exec("insert into testtable (num, text1, text2) values (?, ?, ?)", 1, "txt1", "txt2") if err2 != nil { fmt.Println(err2) } } }()}為什么第一個(gè)版本比第二個(gè)版本慢?有任何想法嗎?我是否可能使用了錯(cuò)誤的函數(shù)來(lái)插入數(shù)據(jù)?
MySQL 順序插入很慢,而線程插入很快 - 為什么?
哆啦的時(shí)光機(jī)
2023-08-14 14:52:05