登录
首页 >  Golang >  Go问答

自动管理 SQL 连接的 Golang 工作池

来源:stackoverflow

时间:2024-02-06 08:27:23 422浏览 收藏

本篇文章给大家分享《自动管理 SQL 连接的 Golang 工作池》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我正在尝试使用 Go 工作池来加速并发工作线程的导入脚本。但现在还没有任何运气。我花了很多时间才写这篇文章......

首先我使用了这个 https://github.com/gammazero/workerpool,它的效果非常好。但这里的问题是,我将作业提交到某个“池”,并且这些作业被执行。当我尝试从所有作业同时写入同一个 SQL 表时,在随机时间后我会遇到一些分段错误。然后我得到建议为每个工作人员打开一个新的 sql 连接。这在设计上是不可能的,因为我无法控制工人本身。

然后我尝试了这里的代码https://gobyexample.com/worker-pools,并在worker() for-range的顶部和底部输入了SQL Open和Close。但我没有运气。尽管我将 1000 个作业推送到池中,但只有 16 个作业被占用(每个工人 1 个,共有 16 个工人)并停止。我不知道为什么。

你们中的任何人都可以为我提供有关 golang 工作池的可靠示例代码,其中每个工作人员控制 SQL 连接吗?

顺便说一句,我使用 https://gorm.io 作为 MySQL ORM,到目前为止效果非常好。

也许你们中的任何人都可以帮助我。我还可以为您提供更多详细信息。 这将大大加快我的导入脚本的速度。

那么再见 阿德里安


正确答案


我终于发现,mysql连接的打开和关闭并没有导致段错误。相反,它是某些产品内部的数据。添加延迟函数以从段错误中恢复后,一切都运行顺利。

以上就是《自动管理 SQL 连接的 Golang 工作池》的详细内容,更多关于的资料请关注golang学习网公众号!

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