A Berkeley DB environment is an encapsulation of one or more databases, logfiles, region files, and configuration files. The Berkeley DB environment has its own set of default configuration values for things such as the number of database locks allowed to be taken out at any given time, the maximum size of the journaling logfiles, and so on. Subversion's filesystem logic additionally chooses default values for some of the Berkeley DB configuration options. However, sometimes your particular repository, with its unique collection of data and access patterns, might require a different set of configuration option values.
The producers of Berkeley DB understand that different
applications and database environments have different
requirements, so they have provided a mechanism for overriding
at runtime many of the configuration values for the Berkeley DB
environment. BDB checks for the presence of a file named
DB_CONFIG
in the environment directory
(namely, the repository's db
subdirectory),
and parses the options found in that file.
Subversion creates the DB_CONFIG
file
when it creates the rest of the repository. The file
initially contains some default options, as well as pointers
to the Berkeley DB online documentation so that you can read
about what those options do.
$ svnadmin create --fstype bdb /var/svn/repos $ ls /var/svn/repos/db changes __db.003 __db.register log.0000000001 revisions checksum-reps __db.004 format miscellaneous strings copies __db.005 fs-type node-origins transactions __db.001 __db.006 locks nodes uuids __db.002 DB_CONFIG lock-tokens representations $
Of course, you are free to add any of the supported Berkeley
DB options to your DB_CONFIG
file. Just be
aware that while Subversion never attempts to read or interpret
the contents of the file and makes no direct use of the option
settings in it, you'll want to avoid any configuration changes
that may cause Berkeley DB to behave in a fashion that is at
odds with what Subversion might expect. Also, changes made
to DB_CONFIG
won't take effect until you
recover the database environment (using
svnadmin recover).