相关疑难解决方法(0)

两阶段提交

我相信大多数人都知道2PC(两阶段提交协议)是什么以及如何在Java或大多数现代语言中使用它.基本上,当您有2个或更多DB时,它用于确保事务处于同步状态.

假设我有两个DB(A和B)在两个不同的位置使用2PC.在A和B准备提交事务之前,两个DB都将向事务管理器报告,说它们已准备好提交.因此,当事务管理器被确认时,它将向A和B发送信号,告诉它们继续.

这是我的问题:让我们说A收到信号并提交交易.一切都完成后,B即将做同样的事情,但有人拔掉电源线,导致整个服务器关闭.当B重新上线时,B会做什么?B怎么做呢?

记住,A是承诺但B不是,我们正在使用2PC(因此,2PC的设计停止工作,不是吗?)

database distributed-transactions

58
推荐指数
1
解决办法
3万
查看次数

PostgreSQL:准备交易

我有两个数据库服务器db1和db2。

db1有一个名为tbl_album
db2的表tbl_user_album

CREATE TABLE tbl_album
(
id    PRIMARY KEY,
name  varchar(128)
...
);

CREATE TABLE tbl_user_album
(
id          PRIMARY KEY,
album_id    bigint
...
);
Run Code Online (Sandbox Code Playgroud)

现在,如果用户想创建一个相册,我的PHP代码需要做的是:

  • 在db1中创建一条记录并保存其ID(主键)
  • 使用保存在第一条语句中的记录在db2中创建记录

是否可以将这两个语句保留在事务中?我也可以使用php解决方案。我的意思是,如果有需要php代码来保留db句柄并在这些句柄上进行提交或回滚的解决方案,我就很好。

任何帮助深表感谢。

php postgresql transactions distributed-transactions prepared-statement

2
推荐指数
1
解决办法
4156
查看次数