Размер буфера журнала в памяти в BerkeleyDB-Core-JAVA - PullRequest
0 голосов
/ 12 июля 2011

Я использую буфер журнала в памяти в выпуске Berkeley BerkeleyDB-Core-JAVA.У меня CDRFile из 9 не хватает записей.Когда я записываю CDRFile в базу данных в долговременной среде базы данных (т. Е. Создаются файлы журнала), создается всего 1,08 ГБ файлов журнала, и когда я задаю эти два параметра в буфере журнала памяти:Я получаю сообщение об ошибке, например:

-------------------------error----------------
PANIC: Not enough space
PANIC: DB_RUNRECOVERY: Fatal error, run database recovery
unable to join the environment
DataBase Exceptioncom.sleepycat.db.RunRecoveryException: DB_RUNRECOVERY: Fatal error,
run database recovery: PANIC: DB_RUNRECOVERY: Fatal error, run database recovery
unable to join the environment: DB_RUNRECOVERY: Fatal error, run database recovery
Writing DataBase Exception--->java.lang.NullPointerException
 ------------------------------error----------------------

, поэтому я думаю, что если на диске создается журнал размером 1 ГБ, я должен установить 1 ГБ пространства в буферной памяти также для файлов журнала.

1 Ответ

0 голосов
/ 02 августа 2011

На этот вопрос обычно можно ответить быстрее на форуме Berkeley DB для ядра Berkeley DB или на Berkeley DB Java Edition forum для BDB JE на OTN.

Судя по вашему сообщению об ошибке, похоже, что вы используете Berkeley DB (ядро) через Java API. Я предполагаю, что у вас заканчивается буферное пространство журнала. В БД Berkeley размер буфера журнала в памяти по умолчанию составляет 1 МБ. Вы можете расширить буфер журнала, увеличив DB_ENV-> set_lg_bsize () в C или setlogBufferSize в Java. В противном случае вы можете разбить транзакцию на более мелкие куски, чтобы не превышать размер буфера журнала в одной транзакции.

Вы сталкиваетесь с этой проблемой, когда вы не создаете файл журнала в памяти, если вы используете меньшую транзакцию или если вы выделили больший буфер журнала в памяти?

Надеюсь, это поможет.

С уважением,

Dave

...