Postgres: 连接中的并发查询

6
在Postgres中,每个连接是否只能执行一个查询(其他查询必须等待第一个查询完成后才能开始)?我认为我在某个驱动程序中看到了这种情况,所以我想确定这是数据库行为而不是特定驱动程序的限制。

你是否正在寻找类似于锁定的东西? - Houari
不,我只想了解事情的工作原理……以及使用单个连接和不使用多个连接所获得和失去的东西。 - Yaron Naveh
5
每个连接只能发送一个查询。不过,你不必在等待查询结果时阻塞客户端:http://www.postgresql.org/docs/current/static/libpq-async.html - Richard Huxton
谢谢@RichardHuxton,您可以提交答案,我会接受。 - Yaron Naveh
请在以后更加具体,包括 PostgreSQL 版本、驱动程序和驱动程序版本、客户端语言等。 - Craig Ringer
1个回答

10
在Postgres中,每个连接只能执行一个查询。PostgreSQL不支持挂起和恢复事务,也不支持在服务器后端进行后台(异步)查询。您仍然可以运行多个并发查询,但每个并发查询需要一个连接。您可以使用线程(每个连接一个线程),但通常最好在客户端库中使用异步查询接口。如果不知道您想要实现什么,以及您正在使用哪种编程语言(因此使用哪种客户端库),很难提供更详细的建议。

抱歉在一个旧问题上发帖 - 我看到你在这里提到并发性,但我想知道是否可以通过这种方式实现加速,或者是否有一些锁会阻止它?当使用 CREATE TABLE ... AS ... 时呢? - Zeruno
1
@Zeruno 同样适用。PostgreSQL 现在具有只读查询的并行化,但您不能在一个会话中同时运行多个不同的语句。您需要多个会话。 - Craig Ringer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接