我发现与插入相同行数的多线程解决方案相比,按顺序将数据插入数据库的速度非常慢。在我的顺序方法中插入 50000 行大约需要 4 分钟,而并行版本只需要大约 10 秒。
我使用https://github.com/go-sql-driver/mysql驱动程序。
对于数据库,我只是采用了最新版本的 Windows 版 XAMPP,并使用标准配置的 MySQL 数据库。
顺序版本:
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)
}
}
}()
}
为什么第一个版本比第二个版本慢?
有任何想法吗?我是否可能使用了错误的函数来插入数据?
一只名叫tom的猫
相关分类