![]() |
1
8
是的,这是可能的;它被称为 distributed transaction 。它是通过以下方式实现的 two-phase commit 在MySQL和PostgreSQL(以及我所听说的所有RDBMS)中。 其思想是在两个并发数据库会话上启动事务。当您必须在一个事务中回滚时,您也会在另一个事务中回滚。 一旦你完成了工作 准备 两项交易。这是一个特殊的过程,它完成了实际提交以外的所有工作,因此可以保证后续提交工作正常。此外,必须持久化这样一个准备好的事务,以便它能够在崩溃中生存下来。 如果数据库上的准备步骤失败,则回滚这两个事务。 一旦成功准备好所有事务,就可以提交它们。这永远不会失败,因为所有的“艰苦工作”都是在准备过程中完成的。 您需要一个协调该工作的组件。该组件称为 事务管理器 并且必须保持每个事务的状态,以便即使工作因崩溃或其他原因中断,也可以继续处理。此组件确保提交或回滚所有事务。 PostgreSQL和MySQL中的SQL语句不同:
有关详细信息,请参阅文档 PostgreSQL 和 MySQL . |
![]() |
a a · 为什么在这个可重入锁示例中需要引用计数? 2 年前 |
![]() |
Grant · goroutines有高空闲唤醒电话 2 年前 |
![]() |
hoaz · 如何安全地清理并发映射 6 年前 |
![]() |
Alanpatchi · int基元类型的volatile声明 6 年前 |