MSDTC是一个巨大的资源消耗吗?

本文关键字:资源 巨大 一个 MSDTC | 更新日期: 2023-09-27 18:09:50

那么,MSDTC对系统(服务器)来说是一个很大的资源消耗吗?应用程序)?

在过去,我已经编写了几个依赖于MSDTC的数据库事务的大型web应用程序。我从来没有调查过这会在服务器上消耗多少资源。

目前,我正在使用CSLA框架,CSLA不依赖于MSDTC进行交易。它基本上重用相同的连接对象并在TransactionScope对象中执行所有数据库命令。

我想我正在寻找一些关于使用MSDTC或不使用的争论。

MSDTC是一个巨大的资源消耗吗?

MSTDC用于分布式事务。为了简化,如果事务需要分发,使用TransactionScope可以隐式地使用MSDTC,即:如果TransactionScope围绕着一段隐含多个资源的代码。这被称为升级,大多数情况下是自动发生的。

所以,是的,它需要一些资源,但如果你确实需要在Windows操作系统上跨多个系统("资源管理器",如SQL Server, Oracle或MSMQ)的ACID事务,你没有太多选择,只能使用MSDTC。

配置MSDTC时,关于性能可以做的一件事是确保分布式资源池只有一个协调器,避免MSDTC到MSDTC的通信。配置通常是您在使用MSDTC时面临的最大问题。示例:http://yrushka.com/index.php/security/configure-msdtc-for-distributed-transactions/

与您的应用程序相比可能没有。我在我当前的项目中使用它,我从来没有注意到它影响CPU资源。你需要注意的是延迟,如果你的事务涉及多个服务器,这将是一个比CPU大得多的问题。

从另一个角度来看,它将不受CPU限制,执行将基于IO。当然,这假设您在交易中没有进行大量计算,但现在这不是DTC的错了,不是吗?

我已经将MSDTC用于注册多个合作伙伴(一个或多个DB服务器和一个或多个使用MSMQ的服务器)的事务。就性能而言,使用MSDTC与使用一般事务相比并不是什么大问题。我们通过MSMQ处理了超过4000万条消息,每条消息都有一个db操作(尽管有些只是缓存读取,但不多)。

最大的问题是MSDTC是一个巨大的痛苦,但当你跨越区域(例如DMZ到内部网)。让员工在不同区域注册是可能的,但需要调整。如果您感兴趣,DTC也有大量的配置选项。