|
Each of the Berkeley DB subsystems within an environment is described by one or more regions. The regions contain all of the per-process and per-thread shared information, including mutexes, that comprise a Berkeley DB environment. These regions are created in one of three areas, depending on the flags specified to the DBENV->open function:
The system memory used by Berkeley DB is potentially useful past the lifetime of any particular process. Therefore, additional cleanup may be necessary after an application fails, as there may be no way for Berkeley DB to ensure that system resources backing the shared memory regions are returned to the system.
The system memory that is used is architecture-dependent. For example, on systems supporting X/Open-style shared memory interfaces, e.g., UNIX systems, the shmget(2) and related System V IPC interfaces are used. Additionally, VxWorks systems use system memory. In these cases, an initial segment ID must be specified by the application to ensure that applications do not overwrite each other's database environments, and so that the number of segments created does not grow without bound. See the DBENV->set_shm_key function for more information.
Any files created in the filesystem to back the regions are created in the environment home directory specified to the DBENV->open call. These files are named __db.###, e.g., __db.001, __db.002 and so on. When region files are backed by the filesystem, one file per region is created. When region files are backed by system memory, a single file will still be created, as there must be a well-known name in the filesystem so that multiple processes can locate the system shared memory that is being used by the environment.
Statistics about the shared memory regions in the environment can be displayed using the -e option to the db_stat utility.