[英]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.