Files
yasuhirokimura-db18/docs/programmer_reference/program_faq.html
T
Yasuhiro KIMURA 923a4cd4e6 Update to 18.1.32
2020-07-24 00:46:17 +09:00

142 lines
6.2 KiB
HTML
Raw 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>Programmer notes FAQ</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="program.html" title="Chapter 17.  Programmer Notes" />
<link rel="prev" href="program_perfmon.html" title="Performance Event Monitoring" />
<link rel="next" href="lock.html" title="Chapter 18.  The Locking Subsystem" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 18.1.32</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Programmer notes FAQ</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="program_perfmon.html">Prev</a> </td>
<th width="60%" align="center">Chapter 17.  Programmer Notes </th>
<td width="20%" align="right"> <a accesskey="n" href="lock.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="program_faq"></a>Programmer notes FAQ</h2>
</div>
</div>
</div>
<div class="orderedlist">
<ol type="1">
<li>
<p>
<span class="bold"><strong>What priorities should
threads/tasks executing Berkeley DB functions be
given?</strong></span>
</p>
<p>
Tasks executing Berkeley DB functions should have
the same, or roughly equivalent, system priorities.
For example, it can be dangerous to give tasks of
control performing checkpoints a lower priority than
tasks of control doing database lookups, and
starvation can sometimes result.
</p>
</li>
<li>
<p>
<span class="bold"><strong>Why isn't the C++ API exception
safe?</strong></span>
</p>
<p>
The Berkeley DB C++ API is a thin wrapper around
the C API that maps most return values to exceptions,
and gives the C++ handles the same lifecycles as their
C counterparts. One consequence is that if an
exception occurs while a cursor or transaction handle
is open, the application must explicitly close the
cursor or abort the transaction.
</p>
<p>
Applications can be simplified and bugs avoided by
creating wrapper classes around <a href="../api_reference/C/dbc.html" class="olink">DBC</a> and <a href="../api_reference/C/txn.html" class="olink">TXN</a> that
call the appropriate cleanup method in the wrapper's
destructor. By creating an instance of the wrappers on
the stack, C++ scoping rules will ensure that the
destructor is called before exception handling unrolls
the block that contains the wrapper object.
</p>
</li>
<li>
<p>
<span class="bold"><strong> How do I handle a "pass 4"
error when trying to run one of the example
Performance Event Monitoring scripts on my Linux
system? The library was configured with
<code class="literal">--enable-dtrace</code> and built
without error. </strong></span>
</p>
<p>
A Linux installation can have SystemTap support for
kernel probe points without including the kernel
"utrace" module needed to use userspace probes. Pass 4
errors can occur when this required userspace support
is not present.
</p>
</li>
<li>
<p>
<span class="bold"><strong> I have a program with multiple
threads running on multi-core systems, and it uses
a shared DB handle for all the threads. The
program does not behave as well as I expect and I
see a lot of contention on the dbp-&gt;mutex, what
should I do to reduce this contention ?
</strong></span>
</p>
<p>
When running multi-threaded program on a
multi-core/multi-processor system, we suggest using a
DB handle per thread instead of using a shared handle
accorss threads. Since many operations(like creating
cursors) requires to lock the DB handle first, and if
using a shared handle, there could be a lot of lock
contention on the handle.
</p>
</li>
</ol>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="program_perfmon.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="program.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="lock.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Performance Event
Monitoring </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Chapter 18.  The Locking Subsystem </td>
</tr>
</table>
</div>
</body>
</html>