BerkleyDB JE DbDump чрезмерное использование памяти

#java #berkeley-db-je

#java #berkeley-db-je

Вопрос:

Мы используем BDB JE в одном из наших приложений и DbDump для резервного копирования базы данных. Однажды произошли интересные вещи. DbDump начинает выдавать OutOfMemoryError . Посмертный анализ показывает, что много памяти используется внутренними узлами BDB ( IN ). Похоже, что BerkleyDB считывает весь набор данных в памяти при его резервном копировании, что для меня довольно странно.

Другой странный факт заключается в том, что это поведение видно только тогда, когда среда открыта самим приложением. Итак, когда DbDumb является единственным клиентом, который открывает среду, все, кажется, в порядке.

Ответ №1:

Рассматривали ли вы возможность использования DbBackup вместо этого? Я знаю, что они выполняют две разные вещи, но если все, что вы хотите сделать, это создать резервную копию базы данных, нет необходимости извлекать все это в память, когда достаточно простого копирования файлов в другое место. Или здесь решающим фактором является способность командной строки?

Комментарии:

1. AFAIK, DbBackup может использоваться только внутри приложения, которое открывает среду. Нам нужен какой-то способ сделать горячее резервное копирование баз данных BDB без изменения приложения в соответствии с этим требованием.