【问题标题】:performance overhead of distributed transactions分布式事务的性能开销
【发布时间】:2011-11-18 02:33:37
【问题描述】:

(在使用 Atomikos 测试分布式事务的实现时,我注意到开销很大(不使用 XA 需要 30 毫秒的事务使用 XA 需要 160 毫秒)

看起来大部分时间都花在“准备”和“提交”上。

对于测试,我使用了涉及单个数据源 (Microsoft SQL Server) 的事务的(不切实际的)场景,没有实际更新。在这种情况下,我希望开销最小。

所以我的问题是:

  • 这是“正常”开销吗?
  • 如果没有,接下来我应该去哪里看? (我最好的猜测是使用 SQL Server Profiler 来查看时间是否花在了数据库中)

【问题讨论】:

    标签: sql-server performance transactions jta distributed-transactions


    【解决方案1】:

    据我所知,这种漫长的等待只会在您第一次使用交易时发生。

    发生这种情况是因为建立了与服务器的连接以启动事务。第一次之后,每次调用 OpenTransaction 应该不会花费那么长时间。

    您可以自行测试。在不关闭应用的情况下,调用事务两次。

    当然会有一些开销,因为当您使用分布式事务时,您提交数据两次或更多取决于您使用的服务器数量(每个服务器一次)。但它不应该像你描述的那么长。

    【讨论】:

    • 谢谢拉斐尔。我看到的延迟不仅限于第一个事务(并且“UserTransaction”对象被重用)。我很好奇 - 你在分布式事务方面有很好的经验吗?有人建议我避免使用它们并改为实现特定于应用程序的机制。
    • 我在分布式事务方面有很好的经验。我有一个运行了 6 个月的软件。也许您看到的这种开销与网络或服务器有关(也许它们被大量使用)。但是如果没有看到您的数据库和软件,就很难告诉您问题出在哪里。
    • 您还应该仔细检查您是否有最新的 sql server 补丁以及服务器的负载。如果您可以发布您正在运行的查询,那就太好了。
    猜你喜欢
    • 2011-11-20
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多