summaryrefslogtreecommitdiff
path: root/docs/programmer_reference/am_conf_select.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/programmer_reference/am_conf_select.html')
-rw-r--r--docs/programmer_reference/am_conf_select.html597
1 files changed, 309 insertions, 288 deletions
diff --git a/docs/programmer_reference/am_conf_select.html b/docs/programmer_reference/am_conf_select.html
index 6f764410..02101484 100644
--- a/docs/programmer_reference/am_conf_select.html
+++ b/docs/programmer_reference/am_conf_select.html
@@ -14,7 +14,7 @@
<body>
<div xmlns="" class="navheader">
<div class="libver">
- <p>Library Version 11.2.5.3</p>
+ <p>Library Version 12.1.6.1</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
@@ -22,9 +22,7 @@
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="am_conf.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 2. 
- Access Method Configuration
- </th>
+ <th width="60%" align="center">Chapter 2.  Access Method Configuration </th>
<td width="20%" align="right"> <a accesskey="n" href="am_conf_logrec.html">Next</a></td>
</tr>
</table>
@@ -42,248 +40,261 @@
<dl>
<dt>
<span class="sect2">
- <a href="am_conf_select.html#idm1772384">Btree or Heap?</a>
+ <a href="am_conf_select.html#idm2274400">Btree or Heap?</a>
</span>
</dt>
<dt>
<span class="sect2">
- <a href="am_conf_select.html#idm2622384">Hash or Btree?</a>
+ <a href="am_conf_select.html#idm2915784">Hash or Btree?</a>
</span>
</dt>
<dt>
<span class="sect2">
- <a href="am_conf_select.html#idm1789184">Queue or Recno?</a>
+ <a href="am_conf_select.html#idm2732704">Queue or Recno?</a>
</span>
</dt>
</dl>
</div>
- <p>
- The Berkeley DB access method implementation unavoidably interacts with
- each application's data set, locking requirements and data access
- patterns. For this reason, one access method may result in
- dramatically better performance for an application than another one.
- Applications whose data could be stored using more than one access
- method may want to benchmark their performance using the different
- candidates.
+ <p>
+ The Berkeley DB access method implementation unavoidably
+ interacts with each application's data set, locking
+ requirements and data access patterns. For this reason, one
+ access method may result in dramatically better performance
+ for an application than another one. Applications whose data
+ could be stored using more than one access method may want to
+ benchmark their performance using the different candidates.
</p>
<p>
- One of the strengths of Berkeley DB is that it provides multiple access
- methods with nearly identical interfaces to the different access
- methods. This means that it is simple to modify an application to use
- a different access method. Applications can easily benchmark the
- different Berkeley DB access methods against each other for their
- particular data set and access pattern.
+ One of the strengths of Berkeley DB is that it provides
+ multiple access methods with nearly identical interfaces to
+ the different access methods. This means that it is simple to
+ modify an application to use a different access method.
+ Applications can easily benchmark the different Berkeley DB
+ access methods against each other for their particular data
+ set and access pattern.
</p>
<p>
- Most applications choose between using the Btree or Heap access
- methods, between Btree or Hash, or between Queue and Recno, because
- each of these pairs offer similar functionality.
+ Most applications choose between using the Btree or Heap
+ access methods, between Btree or Hash, or between Queue and
+ Recno, because each of these pairs offer similar
+ functionality.
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm1772384"></a>Btree or Heap?</h3>
+ <h3 class="title"><a id="idm2274400"></a>Btree or Heap?</h3>
</div>
</div>
</div>
- <p>
- Most applications use Btree because it performs well for most
- general-purpose database workloads. But there are
- circumstances where Heap is the better choice. This section
- describes the differences between the two access methods so
- that you can better understand when Heap might be the superior
- choice for your application.
+ <p>
+ Most applications use Btree because it performs well
+ for most general-purpose database workloads. But there are
+ circumstances where Heap is the better choice. This
+ section describes the differences between the two access
+ methods so that you can better understand when Heap might
+ be the superior choice for your application.
</p>
- <p>
+ <p>
Before continuing, it is helpful to have a high level
- understanding of the operating differences between Btree and
- Heap.
+ understanding of the operating differences between Btree
+ and Heap.
</p>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h4 class="title"><a id="idm1549752"></a>Disk Space Usage</h4>
+ <h4 class="title"><a id="idm2436344"></a>Disk Space Usage</h4>
</div>
</div>
</div>
<p>
- The Heap access method was developed for use in systems
- with constrained disk space (such as an embedded system).
- Because of the way it reuses page space, for some workloads
- it can be much better than Btree on disk space usage
- because it will not grow the on-disk database file as fast
- as Btree. Of course, this assumes that your application is
- characterized by a roughly equal number of record creations
- and deletions.
+ The Heap access method was developed for use in
+ systems with constrained disk space (such as an
+ embedded system). Because of the way it reuses page
+ space, for some workloads it can be much better than
+ Btree on disk space usage because it will not grow the
+ on-disk database file as fast as Btree. Of course,
+ this assumes that your application is characterized by
+ a roughly equal number of record creations and
+ deletions.
</p>
<p>
- Also, Heap can actively control the space used by the
- database with the use of the <a href="../api_reference/C/dbset_heapsize.html" class="olink">DB-&gt;set_heapsize()</a> method. When
- the limit specified by that method is reached, no
- additional pages will be allocated and existing pages will
- be aggressively searched for free space. Also records in
- the heap can be split to fill space on two or more pages.
+ Also, Heap can actively control the space used by
+ the database with the use of the <a href="../api_reference/C/dbset_heapsize.html" class="olink">DB-&gt;set_heapsize()</a>
+ method. When the limit specified by that method is
+ reached, no additional pages will be allocated and
+ existing pages will be aggressively searched for free
+ space. Also records in the heap can be split to fill
+ space on two or more pages.
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h4 class="title"><a id="idm1572504"></a>Record Access</h4>
+ <h4 class="title"><a id="idm2289136"></a>Record Access</h4>
</div>
</div>
</div>
- <p>
- Btree and Heap are fundamentally different because of the
- way that you access records in them. In Btree, you access a
- record by using the record's key. This lookup occurs fairly
- quickly because Btree places records in the database
- according to a pre-defined sorting order. Your application
- is responsible for constructing the key, which means that
- it is relatively easy for your application to know what key
- is in use by any given record.
+ <p>
+ Btree and Heap are fundamentally different because
+ of the way that you access records in them. In Btree,
+ you access a record by using the record's key. This
+ lookup occurs fairly quickly because Btree places
+ records in the database according to a pre-defined
+ sorting order. Your application is responsible for
+ constructing the key, which means that it is
+ relatively easy for your application to know what key
+ is in use by any given record.
</p>
- <p>
- Conversely, Heap accesses records based on their offset
- location within the database. You retrieve a record in a
- Heap database using the record's Record ID (RID), which is
- created when the record is added to the database. The RID
- is created for you; you cannot specify this yourself.
- Because the RID is created for you, your application does
- not have control over the key value. For this reason,
- retrieval operations for a Heap database are usually
- performed using secondary databases. You can then use this
- secondary index to retrieve records stored in your Heap
- database.
+ <p>
+ Conversely, Heap accesses records based on their
+ offset location within the database. You retrieve a
+ record in a Heap database using the record's Record ID
+ (RID), which is created when the record is added to
+ the database. The RID is created for you; you cannot
+ specify this yourself. Because the RID is created for
+ you, your application does not have control over the
+ key value. For this reason, retrieval operations for a
+ Heap database are usually performed using secondary
+ databases. You can then use this secondary index to
+ retrieve records stored in your Heap database.
</p>
<p>
Note that an application's data access requirements
- grow complex, Btree databases also frequently
- require secondary databases. So at a certain level
- of complexity you will be using secondary databases
- regardless of the access method that you choose.
+ grow complex, Btree databases also frequently require
+ secondary databases. So at a certain level of
+ complexity you will be using secondary databases
+ regardless of the access method that you choose.
</p>
<p>
- Secondary databases are described in
- <a class="xref" href="am_second.html" title="Secondary indexes">Secondary indexes</a>.
+ Secondary databases are described in <a class="xref" href="am_second.html" title="Secondary indexes">Secondary indexes</a>.
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h4 class="title"><a id="idm2352312"></a>Record Creation/Deletion</h4>
+ <h4 class="title"><a id="idm2734232"></a>Record Creation/Deletion</h4>
</div>
</div>
</div>
- <p>
- When Btree creates a new record, it places the record on
- the database page that is appropriate for the sorting order
- in use by the database. If Btree can not find a page to put
- the new record on, it locates a page that is in the proper
- location for the new record, splits it so that the existing
- records are divided between the two pages, and then adds
- the new record to the appropriate page.
+ <p>
+ When Btree creates a new record, it places the
+ record on the database page that is appropriate for
+ the sorting order in use by the database. If Btree can
+ not find a page to put the new record on, it locates a
+ page that is in the proper location for the new
+ record, splits it so that the existing records are
+ divided between the two pages, and then adds the new
+ record to the appropriate page.
</p>
- <p>
- On deletion, Btree simply removes the deleted record from
- whatever page it is stored on. This leaves some amount of
- unused space ("holes") on the page. Only new records that
- sort to this page can fill that space. However, once a page
- is completely empty, it can be reused to hold records with
- a different sort value.
+ <p>
+ On deletion, Btree simply removes the deleted
+ record from whatever page it is stored on. This leaves
+ some amount of unused space ("holes") on the page.
+ Only new records that sort to this page can fill that
+ space. However, once a page is completely empty, it
+ can be reused to hold records with a different sort
+ value.
</p>
- <p>
- In order to reclaim unused disk space, you must run the
- <a href="../api_reference/C/dbcompact.html" class="olink">DB-&gt;compact()</a> method, which attempts to fill holes in
- existing pages by moving records from other pages. If it is
- successful in moving enough records, it might be left with
- entire pages that have no data on them. In this event, the
- unused pages might be removed from the database (depending
- on the flags that you provide to <a href="../api_reference/C/dbcompact.html" class="olink">DB-&gt;compact()</a>), which causes
- the database file to be reduced in size.
+ <p>
+ In order to reclaim unused disk space, you must run
+ the <a href="../api_reference/C/dbcompact.html" class="olink">DB-&gt;compact()</a> method, which attempts to fill holes
+ in existing pages by moving records from other pages.
+ If it is successful in moving enough records, it might
+ be left with entire pages that have no data on them.
+ In this event, the unused pages might be removed from
+ the database (depending on the flags that you provide
+ to <a href="../api_reference/C/dbcompact.html" class="olink">DB-&gt;compact()</a>), which causes the database file to be
+ reduced in size.
</p>
<p>
- Both tree searching and page compaction are relatively
- expensive operations. Heap avoids these operations, and so
- is able to perform better under some circumstances.
+ Both tree searching and page compaction are
+ relatively expensive operations. Heap avoids these
+ operations, and so is able to perform better under
+ some circumstances.
</p>
<p>
- Heap does not care about record order. When a record is
- created in a Heap database, it is placed on the first page
- that has space to store the record. No sorting is involved,
- and so the overhead from record sorting is removed.
+ Heap does not care about record order. When a
+ record is created in a Heap database, it is placed on
+ the first page that has space to store the record. No
+ sorting is involved, and so the overhead from record
+ sorting is removed.
</p>
<p>
- On deletion, both Btree and Heap free space within a page
- when a record is deleted. However, unlike Btree, Heap has
- no compaction operation, nor does it have to wait for a
- record with the proper sort order to fill a hole on a page.
- Instead, Heap simply reuses empty page space whenever any
- record is added that will fit into the space.
+ On deletion, both Btree and Heap free space within
+ a page when a record is deleted. However, unlike
+ Btree, Heap has no compaction operation, nor does it
+ have to wait for a record with the proper sort order
+ to fill a hole on a page. Instead, Heap simply reuses
+ empty page space whenever any record is added that
+ will fit into the space.
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h4 class="title"><a id="idm1962568"></a>Cursor Operations</h4>
+ <h4 class="title"><a id="idm1207960"></a>Cursor Operations</h4>
</div>
</div>
</div>
<p>
- When considering Heap, be aware that this access method
- does not support the full range of cursor operations that
- Btree does.
+ When considering Heap, be aware that this access
+ method does not support the full range of cursor
+ operations that Btree does.
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>
- On sequential cursor scans of the database, the
- retrieval order of the records is not predictable
- for Heap because the records are not sorted. Btree,
- of course, sorts its records so the retrieval order
- is predictable.
+ On sequential cursor scans of the database,
+ the retrieval order of the records is not
+ predictable for Heap because the records are
+ not sorted. Btree, of course, sorts its
+ records so the retrieval order is predictable.
</p>
</li>
<li>
- <p>
- When using a Heap database, you cannot create new
- records using a cursor. Also, this means
- that Heap does not support the <a href="../api_reference/C/dbcput.html" class="olink">DBC-&gt;put()</a>
- <code class="literal">DB_AFTER</code> and
- <code class="literal">DB_BEFORE</code> flags.
- You can, however, update existing records using a
- cursor.
+ <p>
+ When using a Heap database, you cannot
+ create new records using a cursor. Also, this
+ means that Heap does not support the <a href="../api_reference/C/dbcput.html" class="olink">DBC-&gt;put()</a>
+ <code class="literal">DB_AFTER</code> and
+ <code class="literal">DB_BEFORE</code> flags. You
+ can, however, update existing records using a
+ cursor.
</p>
</li>
<li>
<p>
- For concurrent applications, iterating through the records in a
- Heap database is not recommended due to performance
- considerations. This is because there is a good
- chance that there are a lot of empty pages in the
- database if you have a concurrent application.
+ For concurrent applications, iterating
+ through the records in a Heap database is not
+ recommended due to performance considerations.
+ This is because there is a good chance that
+ there are a lot of empty pages in the database
+ if you have a concurrent application.
</p>
<p>
- For a Heap database, entire regions are locked when
- a lock is acquired for a database page. If there is
- then contention for that region, and a new database
- page needs to be added, then Berkeley DB simply
- creates a whole new region. The locked region is
- then padded with empty pages in order to reach the
- new region.
+ For a Heap database, entire regions are
+ locked when a lock is acquired for a database
+ page. If there is then contention for that
+ region, and a new database page needs to be
+ added, then Berkeley DB simply creates a whole
+ new region. The locked region is then padded
+ with empty pages in order to reach the new
+ region.
</p>
<p>
- The result is that if the last used page in a
- region is 10, and a new region is created at page
- 100, then there are empty pages from 11 to 99. If
- you are iterating with a cursor, then all those
- empty pages must be examined by the cursor before
- it can reach the data at page 100.
+ The result is that if the last used page in
+ a region is 10, and a new region is created at
+ page 100, then there are empty pages from 11
+ to 99. If you are iterating with a cursor,
+ then all those empty pages must be examined by
+ the cursor before it can reach the data at
+ page 100.
</p>
</li>
</ul>
@@ -293,81 +304,85 @@
<div class="titlepage">
<div>
<div>
- <h4 class="title"><a id="idm2036040"></a>Which Access Method Should You Use?</h4>
+ <h4 class="title"><a id="idm2302168"></a>Which Access Method Should You Use?</h4>
</div>
</div>
</div>
<p>
- Ultimately, you can only determine which access method is
- superior for your application through performance testing
- using both access methods. To be effective, this
- performance testing must use a production-equivalent
- workload.
+ Ultimately, you can only determine which access
+ method is superior for your application through
+ performance testing using both access methods. To be
+ effective, this performance testing must use a
+ production-equivalent workload.
</p>
<p>
- That said, there are a few times when you absolutely must
- use Btree:
+ That said, there are a few times when you
+ absolutely must use Btree:
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>
- If you want to use bulk put and get operations.
+ If you want to use bulk put and get
+ operations.
</p>
</li>
<li>
- <p>
- If having your database clustered on sort order is
- important to you.
+ <p>
+ If having your database clustered on sort
+ order is important to you.
</p>
</li>
<li>
<p>
- If you want to be able to create records using
- cursors.
+ If you want to be able to create records
+ using cursors.
</p>
</li>
<li>
- <p>
+ <p>
If you have multiple threads/processes
- simultaneously creating new records, and you want
- to be able to efficiently iterate over those
- records using a cursor.
+ simultaneously creating new records, and you
+ want to be able to efficiently iterate over
+ those records using a cursor.
</p>
</li>
</ul>
</div>
<p>
- But beyond those limitations, there are some application
- characteristics that should cause you to suspect that Heap
- will work better for your application than Btree. They are:
+ But beyond those limitations, there are some
+ application characteristics that should cause you to
+ suspect that Heap will work better for your
+ application than Btree. They are:
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
- <p>
- Your application will run in an environment with
- constrained resources and you want to set a hard
- limit on the size of the database file.
+ <p>
+ Your application will run in an environment
+ with constrained resources and you want to set
+ a hard limit on the size of the database file.
</p>
</li>
<li>
- <p>
- You want to limit the disk space growth of your
- database file, and your application performs a
- roughly equivalent number of record creations and
- deletions.
+ <p>
+ You want to limit the disk space growth of
+ your database file, and your application
+ performs a roughly equivalent number of record
+ creations and deletions.
</p>
</li>
<li>
<p>
- Inserts into a Btree require sorting the new record
- onto its proper page. This operation can require
- multiple page reads. A Heap database can simply
- reuse whatever empty page space it can find in the
- cache. Insert-intensive applications will typically
- find that Heap is much more efficient than Btree,
- especially as the size of the database increases.
+ Inserts into a Btree require sorting the
+ new record onto its proper page. This
+ operation can require multiple page reads. A
+ Heap database can simply reuse whatever empty
+ page space it can find in the cache.
+ Insert-intensive applications will typically
+ find that Heap is much more efficient than
+ Btree, especially as the size of the database
+ increases.
</p>
</li>
</ul>
@@ -378,127 +393,135 @@
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm2622384"></a>Hash or Btree?</h3>
+ <h3 class="title"><a id="idm2915784"></a>Hash or Btree?</h3>
</div>
</div>
</div>
- <p>
- The Hash and Btree access methods should be used when logical
- record numbers are not the primary key used for data access.
- (If logical record numbers are a secondary key used for data
- access, the Btree access method is a possible choice, as it
- supports simultaneous access by a key and a record number.)
+ <p>
+ The Hash and Btree access methods should be used when
+ logical record numbers are not the primary key used for
+ data access. (If logical record numbers are a secondary
+ key used for data access, the Btree access method is a
+ possible choice, as it supports simultaneous access by a
+ key and a record number.)
</p>
- <p>
- Keys in Btrees are stored in sorted order and the relationship
- between them is defined by that sort order. For this reason,
- the Btree access method should be used when there is any
- locality of reference among keys. Locality of reference means
- that accessing one particular key in the Btree implies that the
- application is more likely to access keys near to the key being
- accessed, where "near" is defined by the sort order. For
- example, if keys are timestamps, and it is likely that a
- request for an 8AM timestamp will be followed by a request for
- a 9AM timestamp, the Btree access method is generally the right
- choice. Or, for example, if the keys are names, and the
- application will want to review all entries with the same last
- name, the Btree access method is again a good choice.
+ <p>
+ Keys in Btrees are stored in sorted order and the
+ relationship between them is defined by that sort order.
+ For this reason, the Btree access method should be used
+ when there is any locality of reference among keys.
+ Locality of reference means that accessing one particular
+ key in the Btree implies that the application is more
+ likely to access keys near to the key being accessed,
+ where "near" is defined by the sort order. For example, if
+ keys are timestamps, and it is likely that a request for
+ an 8AM timestamp will be followed by a request for a 9AM
+ timestamp, the Btree access method is generally the right
+ choice. Or, for example, if the keys are names, and the
+ application will want to review all entries with the same
+ last name, the Btree access method is again a good choice.
</p>
<p>
- There is little difference in performance between the Hash and
- Btree access methods on small data sets, where all, or most of,
- the data set fits into the cache. However, when a data set is
- large enough that significant numbers of data pages no longer
- fit into the cache, then the Btree locality of reference
- described previously becomes important for performance reasons.
- For example, there is no locality of reference for the Hash
- access method, and so key "AAAAA" is as likely to be stored on
- the same database page with key "ZZZZZ" as with key "AAAAB".
- In the Btree access method, because items are sorted, key
- "AAAAA" is far more likely to be near key "AAAAB" than key
- "ZZZZZ". So, if the application exhibits locality of reference
- in its data requests, then the Btree page read into the cache
- to satisfy a request for key "AAAAA" is much more likely to be
- useful to satisfy subsequent requests from the application than
- the Hash page read into the cache to satisfy the same request.
- This means that for applications with locality of reference,
- the cache is generally much more effective for the Btree access
- method than the Hash access method, and the Btree access method
- will make many fewer I/O calls.
+ There is little difference in performance between the
+ Hash and Btree access methods on small data sets, where
+ all, or most of, the data set fits into the cache.
+ However, when a data set is large enough that significant
+ numbers of data pages no longer fit into the cache, then
+ the Btree locality of reference described previously
+ becomes important for performance reasons. For example,
+ there is no locality of reference for the Hash access
+ method, and so key "AAAAA" is as likely to be stored on
+ the same database page with key "ZZZZZ" as with key
+ "AAAAB". In the Btree access method, because items are
+ sorted, key "AAAAA" is far more likely to be near key
+ "AAAAB" than key "ZZZZZ". So, if the application exhibits
+ locality of reference in its data requests, then the Btree
+ page read into the cache to satisfy a request for key
+ "AAAAA" is much more likely to be useful to satisfy
+ subsequent requests from the application than the Hash
+ page read into the cache to satisfy the same request. This
+ means that for applications with locality of reference,
+ the cache is generally much more effective for the Btree
+ access method than the Hash access method, and the Btree
+ access method will make many fewer I/O calls.
</p>
- <p>
- However, when a data set becomes even larger, the Hash access
- method can outperform the Btree access method. The reason for
- this is that Btrees contain more metadata pages than Hash
- databases. The data set can grow so large that metadata pages
- begin to dominate the cache for the Btree access method. If
- this happens, the Btree can be forced to do an I/O for each
- data request because the probability that any particular data
- page is already in the cache becomes quite small. Because the
- Hash access method has fewer metadata pages, its cache stays
- "hotter" longer in the presence of large data sets. In
- addition, once the data set is so large that both the Btree and
- Hash access methods are almost certainly doing an I/O for each
- random data request, the fact that Hash does not have to walk
+ <p>
+ However, when a data set becomes even larger, the Hash
+ access method can outperform the Btree access method. The
+ reason for this is that Btrees contain more metadata pages
+ than Hash databases. The data set can grow so large that
+ metadata pages begin to dominate the cache for the Btree
+ access method. If this happens, the Btree can be forced to
+ do an I/O for each data request because the probability
+ that any particular data page is already in the cache
+ becomes quite small. Because the Hash access method has
+ fewer metadata pages, its cache stays "hotter" longer in
+ the presence of large data sets. In addition, once the
+ data set is so large that both the Btree and Hash access
+ methods are almost certainly doing an I/O for each random
+ data request, the fact that Hash does not have to walk
several internal pages as part of a key search becomes a
- performance advantage for the Hash access method as well.
+ performance advantage for the Hash access method as well.
</p>
- <p>
- Application data access patterns strongly affect all of these
- behaviors, for example, accessing the data by walking a cursor
- through the database will greatly mitigate the large data set
- behavior describe above because each I/O into the cache will
- satisfy a fairly large number of subsequent data
- requests.
+ <p>
+ Application data access patterns strongly affect all of
+ these behaviors, for example, accessing the data by
+ walking a cursor through the database will greatly
+ mitigate the large data set behavior describe above
+ because each I/O into the cache will satisfy a fairly
+ large number of subsequent data requests.
</p>
- <p>
- In the absence of information on application data and data
- access patterns, for small data sets either the Btree or Hash
- access methods will suffice. For data sets larger than the
- cache, we normally recommend using the Btree access method. If
- you have truly large data, then the Hash access method may be a
- better choice. The <a href="../api_reference/C/db_stat.html" class="olink">db_stat</a> utility is a useful tool for monitoring
- how well your cache is performing.
+ <p>
+ In the absence of information on application data and
+ data access patterns, for small data sets either the Btree
+ or Hash access methods will suffice. For data sets larger
+ than the cache, we normally recommend using the Btree
+ access method. If you have truly large data, then the Hash
+ access method may be a better choice. The <a href="../api_reference/C/db_stat.html" class="olink">db_stat</a> utility is a
+ useful tool for monitoring how well your cache is
+ performing.
</p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm1789184"></a>Queue or Recno?</h3>
+ <h3 class="title"><a id="idm2732704"></a>Queue or Recno?</h3>
</div>
</div>
</div>
- <p>
- The Queue or Recno access methods should be used when logical
- record numbers are the primary key used for data access. The
- advantage of the Queue access method is that it performs record
- level locking and for this reason supports significantly higher
- levels of concurrency than the Recno access method. The
- advantage of the Recno access method is that it supports a
- number of additional features beyond those supported by the
- Queue access method, such as variable-length records and
- support for backing flat-text files.
+ <p>
+ The Queue or Recno access methods should be used when
+ logical record numbers are the primary key used for data
+ access. The advantage of the Queue access method is that
+ it performs record level locking and for this reason
+ supports significantly higher levels of concurrency than
+ the Recno access method. The advantage of the Recno access
+ method is that it supports a number of additional features
+ beyond those supported by the Queue access method, such as
+ variable-length records and support for backing flat-text
+ files.
</p>
<p>
- Logical record numbers can be mutable or fixed: mutable, where
- logical record numbers can change as records are deleted or
- inserted, and fixed, where record numbers never change
- regardless of the database operation. It is possible to store
- and retrieve records based on logical record numbers in the
- Btree access method. However, those record numbers are always
- mutable, and as records are deleted or inserted, the logical
- record number for other records in the database will change.
- The Queue access method always runs in fixed mode, and logical
+ Logical record numbers can be mutable or fixed:
+ mutable, where logical record numbers can change as
+ records are deleted or inserted, and fixed, where record
+ numbers never change regardless of the database operation.
+ It is possible to store and retrieve records based on
+ logical record numbers in the Btree access method.
+ However, those record numbers are always mutable, and as
+ records are deleted or inserted, the logical record number
+ for other records in the database will change. The Queue
+ access method always runs in fixed mode, and logical
record numbers never change regardless of the database
- operation. The Recno access method can be configured to run in
- either mutable or fixed mode.
+ operation. The Recno access method can be configured to
+ run in either mutable or fixed mode.
</p>
<p>
- In addition, the Recno access method provides support for
- databases whose permanent storage is a flat text file and the
- database is used as a fast, temporary storage area while the
- data is being read or modified.
+ In addition, the Recno access method provides support
+ for databases whose permanent storage is a flat text file
+ and the database is used as a fast, temporary storage area
+ while the data is being read or modified.
</p>
</div>
</div>
@@ -513,9 +536,7 @@
<td width="40%" align="right"> <a accesskey="n" href="am_conf_logrec.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 2. 
- Access Method Configuration
-  </td>
+ <td width="40%" align="left" valign="top">Chapter 2.  Access Method Configuration  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>