Параметры запуска BDB


Если запуск производился с параметром AUTOCOMMIT=0, то изменения, сделанные в в таблицах BDB, не вносятся, пока не будет выполнена команда COMMIT. Кроме операции фиксации, можно запустить команду ROLLBACK, чтобы отменить изменения (Синтаксис команд BEGIN/COMMIT/ROLLBACK).

Если вы работаете с параметром AUTOCOMMIT=1 (значение по умолчанию), внесенные изменения будут фиксироваться немедленно. Можно выполнить расширенную транзакцию при помощи команды SQL BEGIN WORK, после которой изменения не будут зафиксированы до запуска команды COMMIT (или будут отменены при помощи команды ROLLBACK).

Чтобы изменить параметры таблиц BDB, можно воспользоваться следующими опциями mysqld:

Параметр Описание
--bdb-home=directory Базовый каталог для таблиц BDB. Это должен быть тот же каталог, что и для --datadir.
--bdb-lock-detect=# Обнаружение блокировки Berkeley; одно из значений: DEFAULT, OLDEST, RANDOM или YOUNGEST
--bdb-logdir=directory Каталог файла журнала Berkeley DB
--bdb-no-sync Отмена синхронной записи журналов на диск
--bdb-no-recover Отмена запуска Berkeley DB в режиме восстановления
--bdb-shared-data Запуск Berkeley DB в режиме параллельной обработки (при инициализации Berkeley DB не следует использовать DB_PRIVATE)
--bdb-tmpdir=directory Имя временной директории Berkeley DB
--skip-bdb Отмена использования таблиц BDB
-O bdb_max_lock=1000 Задает максимальное количество возможных блокировок (SHOW VARIABLES).

Если используется параметр --skip-bdb, MySQL не будет инициализировать библиотеку Berkeley DB, что позволит сэкономить большое количество памяти. Разумеется, после включения этого параметра нельзя пользоваться таблицами BDB. если вы попытаетесь создать таблицу BDB, то в этом случае MySQL будет создавать таблицу MyISAM.

Обычно если предполагается использовать таблицы BDB, следует запускать mysqld без параметра --bdb-no-recover. Однако если файлы журналов BDB повреждены, то при попытке запуска mysqld могут возникнуть проблемы (Проблемы при запуске сервера MySQL).

При помощи параметра bdb_max_lock задается максимальное количество блокировок (10000 по умолчанию), которые могут быть установлены на таблицу BDB. Это значение необходимо увеличить, если возникают ошибки bdb: Lock table is out of available locks или Got error 12 from ... при проведении длинных транзакций или когда mysqld должен просмотреть много строк, чтобы произвести необходимые вычисления для запроса.

Можно также изменить binlog_cache_size и max_binlog_cache_size, если используются большие многострочные транзакции (Синтаксис команд BEGIN/COMMIT/ROLLBACK).