14.5.3 BDB Startup Options

The following options to mysqld can be used to change the behavior of the BDB storage engine. For more information, see Section 5.1.3, “Server Command Options”.

Table 14.3 BDB Option/Variable Reference

NameCmd-LineOption fileSystem VarStatus VarVar ScopeDynamic
bdb_cache_size  Yes GlobalNo
bdb-homeYesYes  GlobalNo
- Variable: bdb_home  Yes GlobalNo
bdb-lock-detectYesYesYes GlobalNo
bdb_log_buffer_size  Yes GlobalNo
bdb-logdirYesYes  GlobalNo
- Variable: bdb_logdir  Yes GlobalNo
bdb_max_lock  Yes GlobalNo
bdb-shared-dataYesYes  GlobalNo
- Variable: bdb_shared_data  Yes GlobalNo
bdb-tmpdirYesYes  GlobalNo
- Variable: bdb_tmpdir  Yes GlobalNo
have_bdb  Yes GlobalNo
skip-sync-bdb-logsYesYesYes GlobalNo
sync-bdb-logsYesYesYes GlobalNo

If you use the --skip-bdb option, MySQL does not initialize the Berkeley DB library and this saves a lot of memory. However, if you use this option, you cannot use BDB tables. If you try to create a BDB table, MySQL uses the default storage engine instead.

Normally, you should start mysqld without the --bdb-no-recover option if you intend to use BDB tables. However, this may cause problems when you try to start mysqld if the BDB log files are corrupted. See Section, “Starting and Troubleshooting the MySQL Server”.

With the bdb_max_lock variable, you can specify the maximum number of locks that can be active on a BDB table. The default is 10,000. You should increase this if errors such as the following occur when you perform long transactions or when mysqld has to examine many rows to execute a query:

bdb: Lock table is out of available locks
Got error 12 from ...

You may also want to change the binlog_cache_size and max_binlog_cache_size variables if you are using large multiple-statement transactions. See Section 5.2.3, “The Binary Log”.

See also Section 5.1.4, “Server System Variables”.