BerkeleyDB-Core-JAVA 中的内存日志缓冲区大小

发布于 2024-11-19 17:31:13 字数 904 浏览 3 评论 0原文

我在 Berkeley BerkeleyDB-Core-JAVA 版本中使用内存日志缓冲区。 我有 9 条缺失记录的 CDRFile。 当我在持久数据库环境中的数据库中写入 CDRFile 时(即创建日志文件),则会创建总共 1.08GB 的​​日志文件,并且当我设置内存日志缓冲区的这两个参数时:

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 的文件日志,那么我必须在缓冲区内存中为日志文件设置 1 GB 的空间。

I'm using in-memory log buffer in Berkeley BerkeleyDB-Core-JAVA edition.
I have CDRFile of 9 lack records.
When I am writing CDRFile in database in durable database environment(i.e log files are created) then total 1.08gb of log files are created and when I am setting this two parameters of in memory log buffer:

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

i m getting error like:

-------------------------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----------------------

so I think if 1 gb log of files are created on disk then I must set 1gb of space in buffer memory also for log files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

a√萤火虫的光℡ 2024-11-26 17:31:13

此类问题通常可以在 Berkeley DB 核心或 Berkeley DB Java 版的 Berkeley DB 论坛 上得到更快的解答OTN 上 BDB JE 的论坛

根据您的错误消息,您似乎正在通过 Java API 使用 Berkeley DB(核心)。我的猜测是您的日志缓冲区空间不足。在 Berkeley DB 中,内存中日志缓冲区的默认大小为 1MB。您可以通过在 C 中调用 DB_EN​​V->set_lg_bsize()setlogBu​​fferSize。否则,您可以将事务分解为更小的块,这样单个事务中就不会超过日志缓冲区的大小。

当您不在内存中创建日志文件、使用较小的事务或分配较大的内存日志缓冲区时,您是否会遇到此问题?

我希望这会有所帮助。

问候,

戴夫

this kind of question can usually be answered more quickly on the Berkeley DB forum for Berkeley DB core or the Berkeley DB Java Edition forum for BDB JE on OTN.

Based on your error message, it looks like you're using Berkeley DB (core) via the Java API. My guess is that you're running out of log buffer space. In Berkeley DB the default size for an in-memory log buffer is 1MB. You can either extend the log buffer to be larger by calling DB_ENV->set_lg_bsize() in C or setlogBufferSize in Java. Otherwise, you can break up the transaction into smaller chunks so that you don't exceed the size of the log buffer in a single transaction.

Do you experience this problem when you don't create the log file in-memory, if you use a smaller transaction or if you allocated a larger in-memory log buffer?

I hope that this helps.

Regards,

Dave

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文