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

时间:2015-01-24 21:19:59

标签: java database caching netbeans h2

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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