4

那么,MSDTC 是系统(服务器和应用程序)上的一大资源消耗吗?

过去,我编写了几个依赖 MSDTC 进行数据库事务的大型 Web 应用程序。我从来没有调查过服务器上会有多少消耗。

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

我想我正在寻找一些关于是否使用 MSDTC 的论点。

4

3 回答 3

5

MSTDC 用于分布式事务。为简化起见,TransactionScope如果需要分发事务,则使用 a 可以隐式使用 MSDTC,即:如果 TransactionScope 围绕一段代码,该代码意味着多个资源。这称为升级,大部分时间自动发生。

所以,是的,它需要一些资源,但是如果您确实需要在 Windows 操作系统上跨多个系统(“资源管理器”,例如 SQL Server、Oracle 或 MSMQ)进行ACID事务,那么您别无选择,只能使用 MSDTC .

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

于 2011-09-26T21:02:38.710 回答
2

与您的应用程序相比,可能不是。我在我当前的项目中使用它,我从未注意到它会影响 CPU 资源。您必须注意的是延迟,如果您的事务涉及多个服务器,这将是比 CPU 更大的问题。

另一种看待方式是,它不会受 CPU 限制,执行将基于 IO。当然,这假设您在事务中没有进行大量计算,但这不是 DTC 的错,不是吗?

于 2011-09-26T20:56:18.247 回答
1

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

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

于 2011-09-26T21:02:15.467 回答