两阶段提交协议是否严格支持 ACID在线课堂,各种异常场景是不是都可以覆盖?
2PC 在 commit 阶段发送异常,其实跟最大努力一阶段提交类似也会有部分可见问题,严格讲一段时间内并不能保证 A 原子性和 C 一致性(待故障恢复后 recovery 机制可以保证最终的 A 和 C)在线课堂。
完备的分布式事务支持并不是一件简单的事情,需要可以应对网络以及各种硬件包括网卡、磁盘、CPU、内存、电源等各类异常,通过严格的测试在线课堂。
之前跟某友商交流,他们甚至说目前已知的 NewSQL 在分布式事务支持上都是不完整的,他们都有案例跑不过,圈内人士这么笃定,也说明了分布式事务的支持完整程度其实是层次不齐的在线课堂。
但分布式事务又是这些 NewSQL 数据库的一个非常重要的底层机制,跨资源的 DML、DDL 等都依赖其实现,如果这块的性能、完备性打折扣,上层跨分片 SQL 执行的正确性会受到很大影响在线课堂。