@恰饭家族 postgresql 在事务中用 SET LOCAL synchronous_commit = on 开启实时 fsync 是可行的,在实现上如果支持多语句就能节省一次网络开销,也就是在 jdbc 中调用 execute 方法可以同时把 set 语句和 insert 语句传到数据库,甚至把 begin 和 commmit 也一起传过去,这样才是最高效的,但无论如何,执行 set 语句总会消耗一点时间。如果不想每次执行 set 语句,只能在 session 级设置,然后在客户端维护一个专门的 fsync jdbc 连接即可。
补充说明一下,lealone 的 jdbc 连接创建成本很低的,比在客户端单独执行一条 set 语句的成本还低,很适合在客户端单独维护一条 fsync 的专用连接,就算底层的 tcp 连接断了,也会自动重连,维护的专有 fsync jdbc 连接一直可用。
