(当使用Atomikos测试分布式事务的实现时,我注意到了巨大的开销(使用XA花费30毫秒进行事务处理,而使用XA则花费了160毫秒)
看起来大部分时间都用在“准备”和“提交”中。
在测试中,我使用了涉及单个数据源(Microsoft SQL Server)且没有实际更新的事务的(不现实)方案。我希望在这种情况下的开销最少。
所以我的问题是:
这是“正常”的开销吗?
如果没有,我下一步应该去哪里看? (我最好的猜测是使用SQL Server Profiler来查看时间是否花费在数据库内部)
最佳答案
据我所知,这种漫长的等待仅发生在您第一次使用事务时。
发生这种情况是因为建立了到服务器的连接以启动事务。第一次之后,每次调用OpenTransaction都不需要花费那么长时间。
您可以自己测试。在不关闭应用程序的情况下,两次调用事务。
当然,会存在一些开销,因为当您使用分布式事务时,根据您使用的服务器数量(每台服务器一次),提交数据两次或更多次。但这应该不像您描述的那么长。
关于sql-server - 分布式事务的性能开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435139/