登录
首页 >  Golang >  Go问答

XML 插入性能到 MYSQL

来源:stackoverflow

时间:2024-04-19 21:45:36 395浏览 收藏

大家好,今天本人给大家带来文章《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
}

解决方案


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

https://play.golang.org/p/OxO8pNy3bc6

灵感来自于此。

https://gist.github.com/montanaflynn/ea4b92ed640f790c4b9cee36046a5383

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

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>