程序开发 · 2025年4月22日

XML 插入性能到 MYSQL

当前位置: > > > > XML 插入性能到 MYSQL

来源:stackoverflow
2024-04-19 21:45:36
0浏览
收藏

大家好,今天本人给大家带来文章《XML 插入性能到 MYSQL》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

我有一些代码可以将记录插入数据库:

该代码应该在数据库中插入 15m 条记录,目前在 aws t2.large 实例上需要 60 小时。我正在寻找使数据库插入速度更快且不重复记录的方法。

你们对我有什么建议吗?

我正在使用 gorm 和 mysql。

// InsertJob will insert job into database, by checking its hash.
func InsertJob(job XMLJob, oid int, ResourceID int) (Job, error) {
    db := globalDBConnection
    cleanJobDescription := job.Body

    hashString := GetMD5Hash(job.Title + job.Body + job.Location + job.Zip)
    JobDescriptionHash := GetMD5Hash(job.Body)
    empty := sql.NullString{String: "", Valid: true}
    j := Job{
        CurrencyID:              1, //USD

        //other fields here elided for brevity

        PrimaryIndustry: sql.NullString{String: job.PrimaryIndustry, Valid: true},
    }

    err := db.Where("hash = ?", hashString).Find(&j).Error
    if err != nil {
        if err.Error() != "record not found" {
            return j, err
        }

        err2 := db.Create(&j).Error
        if err2 != nil {
            log.Println("Unable to create job:" + err.Error())
            return j, err2
        }
    }

    return j, nil
}

解决方案

您可以使用信号量模式来加快速度。

灵感来自于此。

今天关于《XML 插入性能到 MYSQL》的内容介绍就到此结束,如果有什么疑问或者建议,可以在公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!