簡體   English   中英

BerkeleyDB-Core-JAVA 中的內存日志緩沖區大小

[英]In-memory log buffer size in BerkeleyDB-Core-JAVA

我在 Berkeley BerkeleyDB-Core-JAVA 版中使用內存日志緩沖區。 我有 9 個缺少記錄的 CDRFile。 當我在持久數據庫環境中的數據庫中寫入 CDRFile(即創建日志文件)時,將創建總共 1.08gb 的日志文件,並且當我在 memory 日志緩沖區中設置這兩個參數時:

envconfig.setLogInMemory(true);
envconfig.setLogBufferSize(1181116006); // 1.10 gb

我收到如下錯誤:

-------------------------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 GB 的文件日志,那么我必須在緩沖區 memory 中也為日志文件設置 1 GB 的空間。

此類問題通常可以在 Berkeley DB core 的 Berkeley DB論壇或 OTN 上 BDB JE 的 Berkeley DB Java 版論壇上得到更快的回答。

根據您的錯誤消息,您似乎正在通過 Java API 使用 Berkeley DB(核心)。 我的猜測是您的日志緩沖區空間不足。 在 Berkeley DB 中,內存中日志緩沖區的默認大小為 1MB。 您可以通過調用C 中的 DB_ENV->set_lg_bsize()Java中的 setlogBufferSize 將日志緩沖區擴展為更大。 否則,您可以將事務分解成更小的塊,這樣您就不會超過單個事務中日志緩沖區的大小。

當您不在內存中創建日志文件、使用較小的事務或分配了較大的內存日志緩沖區時,您是否會遇到此問題?

我希望這個對你有用。

問候,

戴夫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM