OSDN Git Service

More about chained mode and isolation.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 11 Jun 1999 05:40:18 +0000 (05:40 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 11 Jun 1999 05:40:18 +0000 (05:40 +0000)
src/man/begin.l

index aa63586..32b9f7c 100644 (file)
@@ -1,20 +1,44 @@
 .\" This is -*-nroff-*-
 .\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/begin.l,v 1.5 1998/03/25 01:54:48 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/begin.l,v 1.6 1999/06/11 05:40:18 vadim Exp $
 .TH BEGIN SQL 11/05/95 PostgreSQL PostgreSQL
 .SH NAME
-begin - begins a transaction
+begin - begins a transaction in chained mode
 .SH SYNOPSIS
 .nf
 \fBbegin\fP \fB[transaction|work]\fR
 .fi
 .SH DESCRIPTION
-This command begins a user transaction which Postgres will guarantee is
-serializable with respect to all concurrently executing transactions.
-Postgres uses two-phase locking to perform this task.  If the transaction
-is committed, Postgres will ensure that all updates are done or none of
-them are done.  Transactions have the standard ACID (atomic,
-consistent, isolatable, and durable) property.
+
+By default, Postgres executes transactions in unchained mode (also known as
+autocommit feature in other DBMSes). In other words, each user statement is
+executed in its own transaction and commit is implicit (if execution was
+successfull). BEGIN initiates a user transaction in chained mode, i.e. all
+user statements after BEGIN command will be executed in single transaction
+untill explicit COMMIT, ROLLBACK or execution abort. Statements in chained
+mode are executed much faster, because of transaction start/commit requires
+significant CPU and disk activity. This mode is also required for
+consistency when changing one of related tables.
+
+Default transaction isolation level in Postgres is READ COMMITTED one, when
+queries inside transaction see only changes committed before query
+execution. So, you have to use SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
+command just after BEGIN if you need in better transaction isolation.  In
+SERIALIZABLE mode queries will see only changes committed before entire
+transaction began (actually, before execution of first DML statement in
+serializable transaction).
+
+If the transaction is committed, Postgres will ensure either that all
+updates are done or else that none of them are done. Transactions have the
+standard ACID (atomic, consistent, isolatable, and durable) property.
+
+\fBNote\fR: There is no explicit BEGIN command in SQL92; transaction
+initiation is always implicit and it terminates either with a COMMIT or with
+a ROLLBACK statement (i.e. all transactions are chained). SQL92 also
+requires SERIALIZABLE to be default transaction isolation level.
+
 .SH "SEE ALSO"
 rollback(l),
-commit(l).
+commit(l),
+set(l),
+lock(l).