diff options
Diffstat (limited to 'bdb/docs/ref/lock/page.html')
-rw-r--r-- | bdb/docs/ref/lock/page.html | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/bdb/docs/ref/lock/page.html b/bdb/docs/ref/lock/page.html deleted file mode 100644 index a7e43b3af66..00000000000 --- a/bdb/docs/ref/lock/page.html +++ /dev/null @@ -1,62 +0,0 @@ -<!--$Id: page.so,v 10.12 2000/03/18 21:43:14 bostic Exp $--> -<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.--> -<!--All rights reserved.--> -<html> -<head> -<title>Berkeley DB Reference Guide: Page locks</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>Locking Subsystem</dl></h3></td> -<td width="1%"><a href="../../ref/lock/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/lock/stdmode.html"><img src="../../images/next.gif" alt="Next"></a> -</td></tr></table> -<p> -<h1 align=center>Page locks</h1> -<p>Under normal operation, the access methods use page locking. The pagesize -of a database is set when the database is created and may be specified by -calling the <a href="../../api_c/db_set_pagesize.html">DB->set_pagesize</a> function. If not specified, the Berkeley DB -package tries to select a pagesize that will provide the best I/O -performance by setting the page size equal to the block size of the -underlying file system. -<p>In the Btree access method, Berkeley DB uses a technique called lock coupling -to improve concurrency. The traversal of a Btree requires reading a page, -searching that page to determine which page to search next and then -repeating this process on the next page. Once a page has been searched, -it will never be accessed again for this operation, unless a page split -is required. To improve concurrency in the tree, once the next page to -read/search has been determined, that page is locked, and then atomically -(i.e., without relinquishing control of the lock manager) the original -page lock is released. -<p>As the Recno access method is built upon Btree, it too uses lock coupling -for read operations. However, as the Recno access method must maintain -a count of records on its internal pages, it cannot lock couple during -write operations. Instead, it retains write locks on all internal pages -during every update operation. For this reason, it is not possible to -have high concurrency in the Recno access method in the presence of write -operations. -<p>The Queue access method only uses short term page locks. That is, a page -lock is released prior to requesting another page lock. Record locks are -used for transaction isolation. The provides a high degree of concurrency -for write operations. A metadata page is used to keep track of the head -and tail of the queue. This page is never locked during other locking or -I/O operations. -<p>The Hash access method does not have such traversal issues, but because -it implements dynamic hashing, it must always refer to its metadata while -computing a hash function. This metadata is stored on a special page in -the hash database. This page must therefore be read locked on every -operation. Fortunately, it need only be write locked when new pages are -allocated to the file, which happens in three cases: 1) a hash bucket -becomes full and needs to split, 2) a key or data item is too large to -fit on a normal page, and 3) the number of duplicate items for a fixed -key becomes sufficiently large that they are moved to an auxiliary page. -In this case, the access method must obtain a write lock on the metadata -page, thus requiring that all readers be blocked from entering the tree -until the update completes. -<table><tr><td><br></td><td width="1%"><a href="../../ref/lock/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/lock/stdmode.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> |