系统崩溃时 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 数据库缓存会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章