• HybridDB for MySQL在发现事务中的普通语句存在死锁后,将仅保留一个事务并允许其操作,同时清除其它事务的死锁,并回滚这些事务。

  • 若事务中的更新语句一次仅涉及一个分区,死锁的行存在于两个分区,那么死锁过程不会立即被检测出来。多个事务的死锁更新会请求锁,直到锁超时,然后由HybridDB for MySQL通知更新 error。这个 error 结果不会令分区退出事务状态,后续的操作与普通事务相同,分布式数据库将向用户返回锁超时错误。

  • 若事务中的更新语句一次仅涉及一个分区,死锁的行存在于一个分区,那么死锁过程会立即被检测出来。多个事务的死锁更新,仅有一个被保留,其它事务将被立即回滚。由于事务更新历史中存在跨分区的可能,因此分布式数据库将强行锁定所有未通过HybridDB for MySQL死锁检测且被清除的事务,强制用户只能进行 rollback 而不得进行其它任何操作。对于那个通过 HybridDB for MySQL死锁检测的事务,后续的操作与普通事务相同,分布式数据库将向用户返回死锁错误,后续非 rollback 语句将向用户返回仅支持 rollback 错误。

  • 若事务中的更新语句一次涉及多个分区,死锁的行存在于两个分区,那么死锁过程不会立即被检测出来。多个事务的死锁更新会请求锁,直到锁超时,然后由HybridDB for MySQL通知更新 error。这个 error 结果不会令分区退出事务状态,后续的操作与普通事务相同,分布式数据库将向用户返回数据不一致错误。

  • 若事务中的更新语句一次涉及多个分区,死锁的行存在于一个分区,那么死锁过程会立即被检测出来。多个事务的死锁更新,仅有一个被保留,其它事务将被立即回滚。由于事务更新历史中存在跨分区的可能,因此分布式数据库将强行锁定所有未通过HybridDB for MySQL死锁检测且被清除的事务,强制用户只能进行 rollback 而不得进行其它任何操作。对于那个通过 HybridDB for MySQL死锁检测的事务,后续的操作与普通事务相同,分布式数据库将向用户返回数据不一致错误,后续非 rollback 语句将向用户返回仅支持 rollback 错误。