libdb/docs/programmer_reference/lock_config.html
2012-11-14 16:35:20 -05:00

90 lines
4.7 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Configuring locking</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
<link rel="up" href="lock.html" title="Chapter 16.  The Locking Subsystem" />
<link rel="prev" href="lock.html" title="Chapter 16.  The Locking Subsystem" />
<link rel="next" href="lock_max.html" title="Configuring locking: sizing the system" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.3</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Configuring locking</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="lock.html">Prev</a> </td>
<th width="60%" align="center">Chapter 16. 
The Locking Subsystem
</th>
<td width="20%" align="right"> <a accesskey="n" href="lock_max.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="lock_config"></a>Configuring locking</h2>
</div>
</div>
</div>
<p>The <a href="../api_reference/C/envset_lk_detect.html" class="olink">DB_ENV-&gt;set_lk_detect()</a> method specifies that the deadlock detector
should be run whenever a lock is about to block. This option provides
for rapid detection of deadlocks at the expense of potentially frequent
invocations of the deadlock detector. On a fast processor with a highly
contentious application where response time is critical, this is a good
choice. An option argument to the <a href="../api_reference/C/envset_lk_detect.html" class="olink">DB_ENV-&gt;set_lk_detect()</a> method
indicates which lock requests should be rejected.</p>
<p>The application can limit how long it blocks on a contested resource.
The <a href="../api_reference/C/envset_timeout.html" class="olink">DB_ENV-&gt;set_timeout()</a> method specifies the length of the timeout.
This value is checked whenever deadlock detection is performed,
so the accuracy of the timeout depends upon the frequency of
deadlock detection.</p>
<p>In general, when applications are not specifying lock and transaction
timeout values, the <a href="../api_reference/C/lockdetect.html#detect_DB_LOCK_DEFAULT" class="olink">DB_LOCK_DEFAULT</a> option is probably the
correct first choice, and other options should only be selected based
on evidence that they improve transaction throughput. If an application
has long-running transactions, <a href="../api_reference/C/lockdetect.html#detect_DB_LOCK_YOUNGEST" class="olink">DB_LOCK_YOUNGEST</a> will guarantee
that transactions eventually complete, but it may do so at the expense
of a large number of lock request rejections (and therefore, transaction
aborts).</p>
<p>The alternative to using the <a href="../api_reference/C/envset_lk_detect.html" class="olink">DB_ENV-&gt;set_lk_detect()</a> method is to
explicitly perform deadlock detection using the Berkeley DB
<a href="../api_reference/C/lockdetect.html" class="olink">DB_ENV-&gt;lock_detect()</a> method.</p>
<p>The <a href="../api_reference/C/envset_lk_conflicts.html" class="olink">DB_ENV-&gt;set_lk_conflicts()</a> method allows you to specify your own
locking conflicts matrix. This is an advanced configuration option,
and is almost never necessary.</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="lock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="lock.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="lock_max.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Chapter 16. 
The Locking Subsystem
 </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Configuring locking: sizing the system</td>
</tr>
</table>
</div>
</body>
</html>