问题标签 [distributed-transactions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
643 浏览

database - 分布式事务的习语或算法?

想象一下,您在不同的系统上有 2 个实体,需要执行某种事务,根据与其中一个或两个实体相关联的信息更改其中一个或两个,并要求对两个实体的更改要么完成,要么都不完成.

简单的例子,基本上必须在 2 个单独的硬件上运行 2 行:

大概有专门针对这种情况存在的算法或习语,在其他尝试访问相同值的情况下正常工作(对于正确的一些可预测的定义)。两阶段提交协议似乎就是这样一种方法。有没有更简单的替代方案,也许有更多的限制?(例如。也许他们要求没有系统可以完全关闭或无法响应。)或者也许有更复杂的系统在某些方面更好?是否有关于此事的标准或广受好评的文本?

0 投票
1 回答
11658 浏览

.net - 在分布式事务中手动登记后使用 enlist=false 的连接不会关闭

我有一个分布式事务上下文,使用ServiceDomain. 在其中,我使用指定的连接字符串打开一个 SQL 连接Enlist=false,这样它就不会自动加入到事务中。然后,如果我使用 手动在分布式事务中登记连接EnlistDistributedTransaction,则连接不会关闭,它可以以InvalidOperationExceptionwith 结尾:

超时已过。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。

尝试以下操作:

这在 200 个连接处被卡住(并在超时后死亡),因为所有 100 个登记的连接显然都没有关闭(默认连接池大小为 100)。(请注意,如果您想在不创建表的情况下对其进行测试,则可以完全删除该命令。)

我错过了什么或做错了什么?

0 投票
1 回答
305 浏览

ruby - 如何在 Ruby 中的多个进程之间分配任务?

我有一个 ruby​​ 守护程序,它从数据库中选择 100 条记录并使用它执行任务。

为了让它更快,我通常创建同一个守护进程的 3 个实例。并且每一个都使用 mysqlLIMITOFFSET.

问题是有时一项任务会使用相同的数据记录执行 2 或 3 次。

所以我认为只信任数据库是不够的……因为有时两个或更多守护进程实际上可以同时收集相同的数据LIMITOFFSET

我怎样才能安全地做到这一点?避免2个实例选择相同的数据

  • 守护进程 1 => 选择从 1 到 100 的记录
  • 守护进程 2 => 选择从 101 到 200 的记录
  • 守护进程 3 => 选择从 201 到 300 的记录
0 投票
2 回答
537 浏览

sql-server - 从 SQL Server 存储过程结果中选择

我正在将数百个存储过程从一台服务器迁移到另一台服务器,所以我想编写一个存储过程来在每台服务器上执行一个 SP 并比较输出的差异。

为了做到这一点,我通常会使用这种语法将结果放入表中:

然后我会将它们合并并进行计数,以获得结果中有多少行不同:

但是,在这种情况下,我的存储过程包含一个OpenQuery,所以当我尝试将exec放入一个OpenQuery时,查询失败并出现错误:

有什么好的解决方法吗?或者有人对我可以做些什么来加快这个过程有什么聪明的想法吗?因为现在,我似乎必须在每台服务器上运行 SP,将结果脚本写入 tmp 表,然后进行比较。这似乎是一个糟糕的解决方案!

感谢您抽出宝贵时间阅读本文,任何帮助将不胜感激!

0 投票
1 回答
5949 浏览

hibernate - Hibernate 中的托管与 jta 会话范围

我正在阅读“Java Persistence with Hibernate”一书,但被困在第 494 页。我们通过设置扩展对话hibernate.current_session_context_class to managed;是否意味着现在我不能jta (or javax.jta.UserTransaction)在我的方法中使用''?

当我查看第 494 页的拦截器代码时,这种假设变得更加强大。在拦截器中,我们调用 ' session.beginTransaction' 这意味着我们正在使用 Hibernate Transaction API 来控制事务。

这是否意味着,我的实体不能使用 UserTransaction.begin()/commit() 来控制交易?

我之所以这么说是因为在本书的某处我什至读到,当您使用 UserTransaction 来控制事务边界时,您不应该使用 Hibernate Transaction API 吗?

在这里需要一些帮助。

0 投票
1 回答
4175 浏览

sql-server - 如何在 Sql-Server 2000/5 中远程执行表值函数?

我有一个存储过程(sql2005),它需要在远程服务器(sql2000)上调用一个表值函数。

我的查询如下:

我在“cast”附近收到不正确的语法错误。是否可以使用这种表示法执行 tvf?我应该以某种方式使用openrowset吗?任何帮助表示赞赏。

0 投票
2 回答
3457 浏览

mysql - 当前不支持多个同时连接或同一事务中具有不同连接字符串的连接

我正在使用事务范围。在该事务范围内,我有一个 mysql 数据库连接。但是,我需要在之前的事务范围内打开一个新的 [又一个] MySQL 连接。

当我这样做时,我收到以下错误Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.

这是因为 MySQL 服务器不支持多个分布式事务,我应该在代码中更改什么或我应该在服务器中更改什么吗?

如果我使用上述场景,两个连接都连接到 SQL Server 而不是 mysql 服务器,是否会有支持

0 投票
1 回答
285 浏览

sql-server-2008 - 是否可以使用 OleDbTransaction 将数据保存在两个不同的数据库中?

使用 C#,是否可以OleDbTransaction在两个不同的数据库供应商(例如Microsoft SQL ServerOracle )中执行插入?

0 投票
1 回答
1833 浏览

transactions - 跨两个 EJB 服务器的分布式事务

我正在阅读一篇关于 EJB 服务器中的 2-PC 和分布式事务的文章。它说:

2-PC 允许跨不同服务器和资源(例如,数据库和 JMS 提供者)管理事务。2-PC 的细节超出了本书的范围,但是支持它的系统不需要 EJB 或应用程序开发人员进行任何额外的操作。

除了在自己的环境中管理事务之外,EJB 服务器还可以与其他事务系统协调。例如,如果 EJB 实际上来自与 BankEJB 不同的应用程序服务器,那么这两个应用程序服务器将合作将事务作为一个工作单元来管理。

如果我有两个不同的企业应用程序(A 和 B)在托管在两台不同机器上的两个应用程序服务器上运行。我使用的应用服务器将是 WebLogic 和 Oracle AS。2 PC/分布式事务是否有可能协调两台服务器之间的事务(即使它们来自不同的供应商)?如果我的问题不清楚,请告诉我。

0 投票
2 回答
9691 浏览

jakarta-ee - 访问容器管理的 bean 中的事务状态

我有一个使用容器管理事务的@Stateless EJB 。有没有办法访问“状态” javax.transaction.UserTransaction?也就是说,UserTransaction.getStatus()在bean方法内部调用?

我知道在容器管理的 bean 中禁止访问UserTransaction,但我想知道,还有其他方法可以访问getStatus()方法吗?