Db::stat
|
|
#include <db_cxx.h>
int
Db::stat(DbTxn *txnid, void *sp, u_int32_t flags);
int
Db::stat_print(u_int32_t flags);
Description: Db::stat
The Db::stat method creates a statistical structure and copies a
pointer to it into user-specified memory locations. Specifically, if
sp is non-NULL, a pointer to the statistics for the database are
copied into the memory location to which it refers.
Parameters
- flags
- The flags parameter must be set to 0 or
one of the following values:
- DB_DEGREE_2
- Database items read during this operation will have degree 2 isolation.
This ensures the stability of the data items read during the stat
operation but permits that data to be modified or deleted by other
transactions prior to the commit of the specified transaction.
- DB_DIRTY_READ
- Database items read during this operation may include modified but not
yet committed data. Silently ignored if the DB_DIRTY_READ flag
was not specified when the underlying database was opened.
- DB_FAST_STAT
- Return only the values which do not require traversal of the database.
Among other things, this flag makes it possible for applications to
request key and record counts without incurring the performance penalty
of traversing the entire database.
- txnid
- If the operation is to be transaction-protected,
the txnid parameter is a transaction handle returned from
DbEnv::txn_begin; otherwise, NULL.
Statistical structures are stored in allocated memory. If application-specific allocation
routines have been declared (see DbEnv::set_alloc for more
information), they are used to allocate the memory; otherwise, the
standard C library malloc(3) is used. The caller is
responsible for deallocating the memory. To deallocate the memory, free
the memory reference; references inside the returned memory need not be
individually freed.
If the DB_FAST_STAT flag has not been specified, the
Db::stat method will access some of or all the pages in the database,
incurring a severe performance penalty as well as possibly flushing the
underlying buffer pool.
In the presence of multiple threads or processes accessing an active
database, the information returned by Db::stat may be out-of-date.
If the database was not opened read-only and the DB_FAST_STAT
flag was not specified, the cached key and record numbers will be
updated after the statistical information has been gathered.
The Db::stat method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
failure, and returns 0 on success.
Hash Statistics
In the case of a Hash database, the statistics are stored in a structure
of type DB_HASH_STAT. The following fields will be filled in:
- u_int32_t hash_magic;
- Magic number that identifies the file as a Hash file. Returned if
DB_FAST_STAT is set.
- u_int32_t hash_version;
- The version of the Hash database. Returned if DB_FAST_STAT is
set.
- u_int32_t hash_nkeys;
- The number of unique keys in the database. If DB_FAST_STAT was
specified the count will be the last saved value unless it has never
been calculated, in which case it will be 0. Returned if
DB_FAST_STAT is set.
- u_int32_t hash_ndata;
- The number of key/data pairs in the database. If DB_FAST_STAT
was specified the count will be the last saved value unless it has never
been calculated, in which case it will be 0. Returned if
DB_FAST_STAT is set.
- u_int32_t hash_pagesize;
- The underlying Hash database page (and bucket) size, in bytes.
Returned if DB_FAST_STAT is set.
- u_int32_t hash_ffactor;
- The desired fill factor (number of items per bucket) specified at
database-creation time. Returned if DB_FAST_STAT is set.
- u_int32_t hash_buckets;
- The number of hash buckets. Returned if DB_FAST_STAT is set.
- u_int32_t hash_free;
- The number of pages on the free list.
- u_int32_t hash_bfree;
- The number of bytes free on bucket pages.
- u_int32_t hash_bigpages;
- The number of big key/data pages.
- u_int32_t hash_big_bfree;
- The number of bytes free on big item pages.
- u_int32_t hash_overflows;
- The number of overflow pages (overflow pages are pages that contain items
that did not fit in the main bucket page).
- u_int32_t hash_ovfl_free;
- The number of bytes free on overflow pages.
- u_int32_t hash_dup;
- The number of duplicate pages.
- u_int32_t hash_dup_free;
- The number of bytes free on duplicate pages.
Btree and Recno Statistics
In the case of a Btree or Recno database, the statistics are stored in
a structure of type DB_BTREE_STAT. The following fields will be filled
in:
- u_int32_t bt_magic;
- Magic number that identifies the file as a Btree database. Returned
if DB_FAST_STAT is set.
- u_int32_t bt_version;
- The version of the Btree database. Returned if DB_FAST_STAT
is set.
- u_int32_t bt_nkeys;
- For the Btree Access Method, the number of keys in the database. If
the DB_FAST_STAT flag is not specified or the database was
configured to support record numbers (see DB_RECNUM), the count
will be exact. Otherwise, the count will be the last saved value unless
it has never been calculated, in which case it will be 0.
For the Recno Access Method, the number of records in the database. If
the database was configured with mutable record numbers (see
DB_RENUMBER), the count will be exact. Otherwise, if the
DB_FAST_STAT flag is specified the count will be exact but will
include deleted and implicitly created records; if the
DB_FAST_STAT flag is not specified, the count will be exact and
will not include deleted or implicitly created records.
Returned if DB_FAST_STAT is set.
- u_int32_t bt_ndata;
- For the Btree Access Method, the number of key/data pairs in the
database. If the DB_FAST_STAT flag is not specified, the count
will be exact. Otherwise, the count will be the last saved value unless
it has never been calculated, in which case it will be 0.
For the Recno Access Method, the number of records in the database. If
the database was configured with mutable record numbers (see
DB_RENUMBER), the count will be exact. Otherwise, if the
DB_FAST_STAT flag is specified the count will be exact but will
include deleted and implicitly created records; if the
DB_FAST_STAT flag is not specified, the count will be exact and
will not include deleted or implicitly created records.
Returned if DB_FAST_STAT is set.
- u_int32_t bt_pagesize;
- Underlying database page size, in bytes. Returned if
DB_FAST_STAT is set.
- u_int32_t bt_minkey;
- The minimum keys per page. Returned if DB_FAST_STAT is set.
- u_int32_t bt_re_len;
- The length of fixed-length records. Returned if DB_FAST_STAT
is set.
- u_int32_t bt_re_pad;
- The padding byte value for fixed-length records. Returned if
DB_FAST_STAT is set.
- u_int32_t bt_levels;
- Number of levels in the database.
- u_int32_t bt_int_pg;
- Number of database internal pages.
- u_int32_t bt_leaf_pg;
- Number of database leaf pages.
- u_int32_t bt_dup_pg;
- Number of database duplicate pages.
- u_int32_t bt_over_pg;
- Number of database overflow pages.
- u_int32_t bt_empty_pg;
- Number of empty database pages.
- u_int32_t bt_free;
- Number of pages on the free list.
- u_int32_t bt_int_pgfree;
- Number of bytes free in database internal pages.
- u_int32_t bt_leaf_pgfree;
- Number of bytes free in database leaf pages.
- u_int32_t bt_dup_pgfree;
- Number of bytes free in database duplicate pages.
- u_int32_t bt_over_pgfree;
- Number of bytes free in database overflow pages.
Queue Statistics
In the case of a Queue database, the statistics are stored in a
structure of type DB_QUEUE_STAT. The following fields will be filled
in:
- u_int32_t qs_magic;
- Magic number that identifies the file as a Queue file. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_version;
- The version of the Queue file type. Returned if DB_FAST_STAT
is set.
- u_int32_t qs_nkeys;
- The number of records in the database. If DB_FAST_STAT was
specified the count will be the last saved value unless it has never
been calculated, in which case it will be 0. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_ndata;
- The number of records in the database. If DB_FAST_STAT was
specified the count will be the last saved value unless it has never
been calculated, in which case it will be 0. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_pagesize;
- Underlying database page size, in bytes. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_extentsize;
- Underlying database extent size, in pages. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_pages;
- Number of pages in the database.
- u_int32_t qs_re_len;
- The length of the records. Returned if DB_FAST_STAT is set.
- u_int32_t qs_re_pad;
- The padding byte value for the records. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_pgfree;
- Number of bytes free in database pages.
- u_int32_t qs_first_recno;
- First undeleted record in the database. Returned if
DB_FAST_STAT is set.
- u_int32_t qs_cur_recno;
- Next available record number. Returned if DB_FAST_STAT is set.
Errors
The Db::stat method
may fail and throw
DbException,
encapsulating one of the following non-zero errors, or return one of
the following non-zero errors:
- DB_REP_HANDLE_DEAD
- The database handle has been invalidated because a replication election
unrolled a committed transaction.
- EINVAL
- An
invalid flag value or parameter was specified.
Description: Db::stat_print
The Db::stat_print method returns the
database statistical information, as described for the Db::stat method.
The information is printed to a specified output channel (see the
DbEnv::set_msgfile method for more information), or passed to an
application callback function (see the DbEnv::set_msgcall method for
more information).
The Db::stat_print method may not be called before the Db::open method has been
called.
The Db::stat_print method
either returns a non-zero error value
or throws an exception that encapsulates a non-zero error value on
failure, and returns 0 on success.
Parameters
- flags
- The flags parameter must be set to 0 or
the following value:
- DB_STAT_ALL
- Display all available information.
Class
Db
See Also
Databases and Related Methods
Copyright (c) 1996-2004 Sleepycat Software, Inc. - All rights reserved.