Berkeley DB Reference Guide:
Memory Pool Subsystem


Berkeley DB and the memory pool

The Memory Pool subsystem is the general-purpose shared memory buffer pool used by Berkeley DB. This module is useful outside of the Berkeley DB package for processes that require page-oriented, shared and cached file access.

A memory pool is a memory cache shared among any number of threads of control. The DB_INIT_MPOOL flag to the DB_ENV->open method opens and optionally creates a memory pool. When that pool is no longer in use, it should be closed using the DB_ENV->close method.

The DB_ENV->memp_fcreate method returns a DB_MPOOLFILE handle on an underlying file within the memory pool. The file may be opened using the DB_MPOOLFILE->open method. The DB_MPOOLFILE->get method is used to retrieve pages from files in the pool. All retrieved pages must be subsequently returned using the DB_MPOOLFILE->put method. At the time pages are returned, they may be marked dirty, which causes them to be written to the underlying file before being discarded from the pool. If there is insufficient room to bring a new page in the pool, a page is selected to be discarded from the pool using a least-recently-used algorithm. Pages in files may also be explicitly marked clean or dirty using the DB_MPOOLFILE->set method. All dirty pages in the pool from the file may be flushed using the DB_MPOOLFILE->sync method. When the file handle is no longer in use, it should be closed using the DB_MPOOLFILE->close method.

There are additional configuration interfaces that apply when opening a new file in the memory pool:

There are additional interfaces for the memory pool as a whole:

Memory Pools and Related MethodsDescription
DB_ENV->set_cachesizeSet the environment cache size
DB_ENV->set_mp_mmapsizeSet maximum mapped-in database file size
DB_ENV->memp_registerRegister input/output functions for a file in a memory pool
DB_ENV->memp_statReturn memory pool statistics
DB_ENV->memp_syncFlush pages from a memory pool
DB_ENV->memp_trickleTrickle flush pages from a memory pool
DB_ENV->memp_fcreateOpen a file in a memory pool
DB_MPOOLFILE->closeClose a file in a memory pool
DB_MPOOLFILE->getGet page from a file in a memory pool
DB_MPOOLFILE->openOpen a file in a memory pool
DB_MPOOLFILE->putReturn a page to a memory pool
DB_MPOOLFILE->setSet memory pool page status
DB_MPOOLFILE->syncFlush pages from a file in a memory pool
DB_MPOOLFILE->set_clear_lenSet file page bytes to be cleared
DB_MPOOLFILE->set_fileidSet file unique identifier
DB_MPOOLFILE->set_ftypeSet file type
DB_MPOOLFILE->set_lsn_offsetSet file log-sequence-number offset
DB_MPOOLFILE->set_pgcookieSet file cookie for pgin/pgout


Copyright Sleepycat Software