summaryrefslogtreecommitdiff
path: root/bdb/docs/ref/txn/nested.html
diff options
context:
space:
mode:
Diffstat (limited to 'bdb/docs/ref/txn/nested.html')
-rw-r--r--bdb/docs/ref/txn/nested.html66
1 files changed, 0 insertions, 66 deletions
diff --git a/bdb/docs/ref/txn/nested.html b/bdb/docs/ref/txn/nested.html
deleted file mode 100644
index a635abf52a8..00000000000
--- a/bdb/docs/ref/txn/nested.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--$Id: nested.so,v 10.17 2000/12/31 19:26:22 bostic Exp $-->
-<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
-<!--All rights reserved.-->
-<html>
-<head>
-<title>Berkeley DB Reference Guide: Nested transactions</title>
-<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
-<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
-</head>
-<body bgcolor=white>
- <a name="2"><!--meow--></a>
-<table><tr valign=top>
-<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Transaction Subsystem</dl></h3></td>
-<td width="1%"><a href="../../ref/txn/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/txn/limits.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p>
-<h1 align=center>Nested transactions</h1>
-<p>Berkeley DB provides support for nested transactions. Nested transactions
-allow an application to decompose a large or long-running transaction
-into smaller units that may be independently aborted.
-<p>Normally, when beginning a transaction, the application will pass a NULL
-value for the parent argument to <a href="../../api_c/txn_begin.html">txn_begin</a>. If, however, the
-parent argument is a DB_TXN handle, then the newly created
-transaction will be treated as a nested transaction within the parent.
-Transactions may nest arbitrarily deeply. For the purposes of this
-discussion, transactions created with a parent identifier will be called
-child transactions.
-<p>Once a transaction becomes a parent, as long as any of its child
-transactions are unresolved (i.e., they have neither committed nor
-aborted), the parent may not issue any Berkeley DB calls except to begin more
-child transactions or to commit or abort. That is, it may not issue
-any access method or cursor calls. Once all of a parent's children have
-committed or aborted, the parent may again request operations on its
-own behalf.
-<p>The semantics of nested transactions are as follows. When a child
-transaction is begun, it inherits all the locks of its parent. This
-means that the child will never block waiting on a lock held by its
-parent. However, if a parent attempts to obtain locks after they have
-begun a child, the parental locks can conflict with those held by a
-child. Furthermore, locks held by two different children will also
-conflict. To make this concrete, consider the following set of
-transactions and lock acquisitions.
-<p>Transaction T1 is the parent transaction. It acquires an exclusive lock
-on item A and then begins two child transactions, C1 and C2. C1 also
-wishes to acquire a write lock on A; this succeeds. Now, let's say that
-C1 acquires a write lock on B. If C2 now attempts to obtain a lock on
-B, it will block. However, let's now assume that C1 commits. Its locks
-are anti-inherited, which means they are now given to T1. At this
-point, either T1 or C2 is allowed to acquire a lock on B. If, however,
-transaction T1 aborts, then its locks are released. Future requests by
-T1 or C2 will also succeed, but they will be obtaining new locks as
-opposed to piggy-backing off a lock already held by T1.
-<p>Child transactions are entirely subservient to their parent transaction.
-They may abort, undoing their operations regardless of the eventual fate
-of the parent. However, even if a child transaction commits, if its
-parent transaction is eventually aborted, the child's changes are undone
-and the child's transaction is effectively aborted. Any child
-transactions that are not yet resolved when the parent commits or aborts
-are resolved based on the parent's resolution, committing if the parent
-commits and aborting if the parent aborts. Any child transactions that
-are not yet resolved when the parent prepares are also prepared.
-<table><tr><td><br></td><td width="1%"><a href="../../ref/txn/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../ref/toc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/txn/limits.html"><img src="../../images/next.gif" alt="Next"></a>
-</td></tr></table>
-<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
-</body>
-</html>