系统崩溃时 H2 数据库缓存会发生啥?

Posted

技术标签:

【中文标题】系统崩溃时 H2 数据库缓存会发生啥?【英文标题】:What happens to H2 database cache on a system crash?系统崩溃时 H2 数据库缓存会发生什么? 【发布时间】:2015-01-24 21:19:59 【问题描述】:

我今天的经历真的很糟糕。我通过 Netbeans IDE 将一些批处理 SQL 脚本应用到我的 H2 数据库(在 TCP 模式下运行)。工作 5 小时后,Netbeans IDE 中的数据库连接突然冻结...随后我重新启动服务器(运行 H2 数据库的服务器),然后我意识到过去 5 小时的所有更改都没有应用或以某种方式回滚...

我的结论是,更改仅在缓存中,并没有刷新到数据库中,因为在每个 SQL 脚本之后查询时,结果在任何时候都是可见的。

因此,在系统故障的情况下,数据库缓存会发生什么?走了……?

【问题讨论】:

【参考方案1】:

是的。如果系统发生故障,缓存就会消失。您一定没有提交交易。唯一的保证是它必须回滚(因为它没有被提交并且客户端已经断开连接)。

如果它已被提交并随后崩溃(在刷新之前),那么服务器仍有可能根据提交/事务日志和内部元数据的某种组合进行恢复。

【讨论】:

感谢 Elliott 提供的信息。不知何故,我的交易没有正确提交。它现在第二次起作用了。

以上是关于系统崩溃时 H2 数据库缓存会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

当进程崩溃时,操作系统是不是会刷新 CPU 缓存?

当活动崩溃时会发生啥?

3分钟整明白啥是 缓存雪崩

当 RabbitMQ 消费者崩溃时,获取的消息会发生啥?

当我们在 C 中取消引用 NULL 指针时,操作系统会发生啥?

如果您在进程崩溃后在进程中分配内存会发生啥?