我们目前在嵌入式模式下使用H2版本199,带有默认的nio文件协议和MVStore存储系统。write_delay参数设置为60秒。
我们在2秒内(在一个事务中(运行了大约30000条语句的批量插入/更新/删除,然后在30秒后(在第二个事务(运行了另一批几百条语句。下一次尝试打开数据库连接(仅2分钟后(表明数据库已损坏:
File corrupted while reading record: null. Possible solution: use the recovery tool [90030-199]
由于事务发生在一分钟内,我们想知道60秒的write_delay是否会导致此问题。
将write_delay更改为60s(默认值为0.5s(肯定会增加丢失事务的风险,我认为这样做没有充分的理由。不过,应该不会导致数据库损坏。更有可能是一些线程中断造成了这种情况,因为您在同一个JVM中运行web服务器,谁知道还有什么。使用异步文件存储可能会在这方面有所帮助,是的,它足够稳定(无论如何,它对你的应用程序来说会比数据库损坏更糟糕(。