- 如果在日志 Commit 后,数据还没有完全写入到 RocksDB KV 中,而 TiKV 挂掉了,此时应用会返回错误还是返回 Commit?
- 在这种情况下,TiKV 会返回错误给应用程序。这是因为 TiKV 保证了数据的一致性和持久性,如果数据尚未完全写入 RocksDB KV 中,TiKV 会认为写入操作未完成,因此会返回错误给应用程序,而不是返回 Commit。
疑问:这个时候对于应用来说数据是没有写入成功的,但是对于tidb来说这个数据是完全写入成功的吧?(日志持久化后,tikv起来后也会做crash recover),那是否意味着如果在tikv层有flushback操作会更加合理 ?
- 在这种情况下,TiKV 会返回错误给应用程序。这是因为 TiKV 保证了数据的一致性和持久性,如果数据尚未完全写入 RocksDB KV 中,TiKV 会认为写入操作未完成,因此会返回错误给应用程序,而不是返回 Commit。