系统崩溃时 H2 数据库缓存会发生什么情况?
What happens to H2 database cache on a system crash?
今天的体验真的很糟糕。我通过 Netbeans IDE 将一些批处理 SQL 脚本应用到我的 H2 数据库(在 TCP 模式下是 运行)。工作5小时后,Netbeans IDE 中的数据库连接突然卡住了...随后我重新启动了服务器(H2数据库在运行上),然后我发现最近5个的所有更改小时数未应用或以某种方式回滚...
我的结论是,更改仅在缓存中,并没有刷新到数据库中,因为在每个 SQL 脚本之后查询时,结果在任何时候都是可见的。
因此,如果系统出现故障,数据库缓存会发生什么情况?走了...?
是的。如果系统出现故障,缓存就会消失。您一定没有提交交易。唯一的保证是它必须回滚(因为它没有提交并且客户端已经断开连接)。
如果它已提交并随后崩溃(在刷新之前),那么服务器仍有可能根据 commit/transaction 日志和内部元数据的某种组合进行恢复。
今天的体验真的很糟糕。我通过 Netbeans IDE 将一些批处理 SQL 脚本应用到我的 H2 数据库(在 TCP 模式下是 运行)。工作5小时后,Netbeans IDE 中的数据库连接突然卡住了...随后我重新启动了服务器(H2数据库在运行上),然后我发现最近5个的所有更改小时数未应用或以某种方式回滚...
我的结论是,更改仅在缓存中,并没有刷新到数据库中,因为在每个 SQL 脚本之后查询时,结果在任何时候都是可见的。
因此,如果系统出现故障,数据库缓存会发生什么情况?走了...?
是的。如果系统出现故障,缓存就会消失。您一定没有提交交易。唯一的保证是它必须回滚(因为它没有提交并且客户端已经断开连接)。
如果它已提交并随后崩溃(在刷新之前),那么服务器仍有可能根据 commit/transaction 日志和内部元数据的某种组合进行恢复。