#java #berkeley-db-je
#java #berkeley-db-je
Вопрос:
Мы используем BDB JE в одном из наших приложений и DbDump
для резервного копирования базы данных. Однажды произошли интересные вещи. DbDump
начинает выдавать OutOfMemoryError
. Посмертный анализ показывает, что много памяти используется внутренними узлами BDB ( IN
). Похоже, что BerkleyDB считывает весь набор данных в памяти при его резервном копировании, что для меня довольно странно.
Другой странный факт заключается в том, что это поведение видно только тогда, когда среда открыта самим приложением. Итак, когда DbDumb является единственным клиентом, который открывает среду, все, кажется, в порядке.
Ответ №1:
Рассматривали ли вы возможность использования DbBackup
вместо этого? Я знаю, что они выполняют две разные вещи, но если все, что вы хотите сделать, это создать резервную копию базы данных, нет необходимости извлекать все это в память, когда достаточно простого копирования файлов в другое место. Или здесь решающим фактором является способность командной строки?
Комментарии:
1. AFAIK,
DbBackup
может использоваться только внутри приложения, которое открывает среду. Нам нужен какой-то способ сделать горячее резервное копирование баз данных BDB без изменения приложения в соответствии с этим требованием.