数据库中的事务和语句有什么区别?

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

我正在读一本名为“PostgreSQL Administration Cookbook 9.5-9.6 Edition”的书。在这本书的第 20 页中,作者告诉我们,如果用户连接到 PostgreSQL 集群,那么他将连接定义为 -

"Once you've connected, each connection can have one active transaction at a time and one fully active statement at any time."

我知道在数据库中执行 SQL 命令称为事务,但我不完全理解 statement 在这种情况下的含义。我想知道 statement 在这里意味着什么,以及它与数据库中的 transaction 有何不同。

sql database postgresql database-administration
1个回答
0
投票

陈述很容易解释。它是您发送到服务器的 SQL 语句(例如

SELECT
INSERT
CREATE TABLE
等)。在任何给定时间,数据库会话中只能运行一条语句,并且您必须等待上一条语句的结果才能发送下一条语句。 (这并不是100%正确:有管道模式,您可以向服务器发送多条语句,而无需等待第一个语句完成,但这些语句仍然一个接一个地执行。这只是一种方式以减少网络延迟的影响。)

A transaction 是一个或多个 SQL 语句,以某种方式捆绑在一起,使语句的执行显得原子:要么所有语句成功,要么全部失败,并且事务中任何语句的效果仅在以下情况下对外部可见:事务已提交(成功完成)。默认情况下,PostgreSQL 在其自己的事务中运行每个语句,但您可以使用

START TRANSACTION
BEGIN
显式启动事务,这可以跨越多个语句。

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