diff --git a/doc/src/sgml/ref/begin.sgml b/doc/src/sgml/ref/begin.sgml
index cd9842a87de..62e5b88d0a7 100644
--- a/doc/src/sgml/ref/begin.sgml
+++ b/doc/src/sgml/ref/begin.sgml
@@ -10,7 +10,7 @@
BEGIN WORK
- Begins a transaction
+ Begins a transaction in chained mode
@@ -78,15 +78,31 @@ BEGIN [ WORK | TRANSACTION ]
Description
- BEGIN initiates 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 either that all updates are
- done or else
- that none of
+ 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.
@@ -105,12 +121,12 @@ BEGIN [ WORK | TRANSACTION ]
Refer to the LOCK statement for further information
- about locking tables inside a transaction.
+ about locking tables inside a transaction.
Use COMMIT or ROLLBACK
- to terminate a transaction.
+ to terminate a transaction.
@@ -133,7 +149,7 @@ BEGIN WORK;
BEGIN
- is a Postgres language extension.
+ is a Postgres language extension.
@@ -144,9 +160,12 @@ BEGIN WORK;
There is no explicit BEGIN WORK command in SQL92;
- transaction initiation
- is always implicit and it terminates either with a COMMIT or with
- a ROLLBACK statement.
+ transaction initiation is always implicit and it terminates either
+ with a COMMIT or with a ROLLBACK statement.
+
+
+ SQL92 also requires SERIALIZABLE to be default
+ transaction isolation level.