微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

H2 数据库:60 秒的写入延迟对数据库健康有不利影响吗?

如何解决H2 数据库:60 秒的写入延迟对数据库健康有不利影响吗?

我们目前在嵌入式模式下使用 H2 版本 199,具有认的 nio 文件协议和 MVStore 存储系统。 write_delay 参数设置为 60 秒。

我们在 2 秒内(在一个事务中)运行了大约 30.000 条语句的批量插入/更新/删除,然后仅在 30 秒后(在第二个事务中)又运行了几百条语句。下一次尝试打开数据库连接(仅 2 分钟后)显示数据库已损坏:

File corrupted while reading record: null. Possible solution: use the recovery tool [90030-199]

由于事务在一分钟内发生,我们想知道 60 秒的 write_delay 是否可能导致问题。

解决方法

将 write_delay 更改为 60 秒(从默认值 0.5 秒)肯定会增加丢失交易的风险,我认为这样做没有充分的理由。但是,不应导致数据库损坏。更有可能的是一些线程中断会这样做,因为您在同一个 JVM 中运行 Web 服务器并且谁知道还有什么。使用异步文件存储可能会在这方面有所帮助,而且它足够稳定(无论如何,它对您的应用来说可能比数据库损坏更糟糕)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。