diff options
| author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1999-06-11 05:19:53 +0000 | 
|---|---|---|
| committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1999-06-11 05:19:53 +0000 | 
| commit | 962c66d83f294f7f2e4832691493bc1d15093047 (patch) | |
| tree | 7e98273915ce9be2cc50820e18910338d190d728 /doc/src | |
| parent | 3b9ef4d0733cbf8e903afb45e21fd55ecf0a73ed (diff) | |
More about chained mode and isolation levels.
Diffstat (limited to 'doc/src')
| -rw-r--r-- | doc/src/sgml/ref/begin.sgml | 51 | 
1 files changed, 35 insertions, 16 deletions
| 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    </REFNAME>    <REFPURPOSE> -   Begins a transaction +   Begins a transaction in chained mode    </REFPURPOSE>    </refnamediv> @@ -78,15 +78,31 @@ BEGIN [ WORK | TRANSACTION ]     Description    </TITLE>    <para> -   <command>BEGIN</command> initiates a user transaction - which <productname>Postgres</productname> will -   guarantee is serializable with respect to all concurrently -   executing transactions. <productname>Postgres</productname> uses two-phase - locking -   to perform this task. If the transaction is committed, -   <productname>Postgres</productname> will ensure either that all updates are - done or else -   that none of +   By default, <productname>Postgres</productname> 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). +   <command>BEGIN</command> initiates a user transaction in chained mode, +   i.e. all user statements after <command>BEGIN</command> 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. +  </para> +  <para> +   Default transaction isolation level in <productname>Postgres</productname> +   is READ COMMITTED one, when queries inside transaction see only changes +   committed before query execution. So, you have to use  +   <command>SET TRANSACTION ISOLATION LEVEL SERIALIZABLE</command> +   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). +  </para> +  <para> +   If the transaction is committed, <productname>Postgres</productname>  +   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.    </para> @@ -105,12 +121,12 @@ BEGIN [ WORK | TRANSACTION ]     <PARA>      Refer to the <command>LOCK</command> statement for further information - about locking tables inside a transaction. +    about locking tables inside a transaction.     </PARA>     <PARA>      Use <command>COMMIT</command> or <command>ROLLBACK</command> - to terminate a transaction. +    to terminate a transaction.     </PARA>    </REFSECT2>   </refsect1> @@ -133,7 +149,7 @@ BEGIN WORK;    </TITLE>    <PARA>      <command>BEGIN</command> - is a <productname>Postgres</productname> language extension. +    is a <productname>Postgres</productname> language extension.    </para>    <REFSECT2 ID="R2-SQL-BEGINWORK-4">       <REFSECT2INFO> @@ -144,9 +160,12 @@ BEGIN WORK;     </TITLE>     <PARA>       There is no explicit BEGIN WORK command in <acronym>SQL92</acronym>; - 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. +   </PARA> +   <PARA> +    <acronym>SQL92</acronym> also requires SERIALIZABLE to be default +    transaction isolation level.     </PARA>    </refsect2>   </refsect1> | 
