如何使用Golang在Postgres中批处理SQL语句

问题描述 投票:0回答:1

使用Golang将批量请求发送到Postgres数据库的最快方法是什么?每个请求包含500-200000行。 我知道的方法是 - 1.使用database / sql包的事务Begin,Prepare,Commit。 2.在一个陈述中发送所有数据。 3.使用sql.Exec()方法发送语句列表。 是否有其他方法发送批处理请求而不在每个语句处建立连接?如果不是这些是最好的方式?

这个问题类似于问题at-Golang how do I batch sql statements with package database.sql

sql postgresql go
1个回答
1
投票

那里有一点旧的depesz blog post。他的程序是Perl脚本,但如果你专注于SQL ......无论如何 - 从DB的角度来看,你可以在COPY中使用INSERTVALUES。看起来大约20个是不错的选择,但在你的情况下测试它是值得的。如果性能是关键因素,我会为每个事务放置大约2000-5000行。另外,从DB透视事务,会话是两个独立的事情。因此,您可以打开会话,以及其中的许多事务。

对于PostgreSQL来说,每个操作开始新的会话真是个坏主意 - 数据库为每个会话产生新的进程。您提到的问题的答案之一包含this。所以你打开连接,然后交易,应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.