This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

配置 Berkeley DB 环境

一个 Berkeley DB 环境由一个或多个数据库, 日志文件, 区域文件和 配置文件封装而成. Berkeley DB 环境有一套自己的默认配置, 例如在任意 时刻允许持有的数据库锁的个数, 日志文件的最大大小等. Subversion 的 文件系统逻辑根据自己的需要, 为某些 Berkeley DB 配置选项额外选取了默认 值. 然而, 你的仓库可能存放的是非常独特的数据, 而且访问模式也很特殊, 这时候你可能需要一套不同的配置选项值.

Berkeley DB 的开发人员明白不同的应用程序和数据库环境具有不同的需求, 所以他们提供了一种机制, 支持在运行时修改 Berkeley DB 环境的众多配置选项. BDB 在环境目录 (也就是仓库内的 db 子目录) 内检查 文件 DB_CONFIG 是否存在, 如果存在则解析该文件内 的选项.

Subversion 在创建仓库时会去创建文件 DB_CONFIG, 初始时, 文件包含了一些默认选项, 以及指向 Berkeley DB 在线文档的链接, 以便管理员了解选项的意义.

$ 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
$

当然, 管理员也可以往 DB_CONFIG 添加更多的 BDB 选项, 但要注意 Subversion 从来不会去读取或解释 DB_CONFIG 的内容, 更不会直接使用文件内的选项. 管理员需要避免的是配置上的变化可能会导致 Berkeley DB 表现出的行为 与 Subversion 所期待的不符. 另外, DB_CONFIG 的 变化只有在恢复数据库环境 (使用 svnadmin recover) 时才会生效.