0

我正在使用 Microsoft Sync Framework 在 N 层客户端服务器架构中同步数据。当要同步的数据量较少时,同步工作正常。但是,当需要同步大量数据时,我面临数据库锁定问题。这种行为的主要原因似乎是长时间运行的事务,这会导致来自多个同步代理的其他事务被阻止。我已经对此进行了以下测试:
Sql Server 2008 --> 物理机/ VM - 失败,出现锁定问题
Sql Server 2008 R2 --> 物理机/ VM - 在物理上成功,在 VM 上失败

请建议,导致这种行为的问题可能是什么。我相信这种行为超出了同步框架域,因为同步框架为批处理打开了一个事务(我正在使用同步批处理)并在批处理完成时提交。但是,我无法理解多个数据库对象被锁定时的行为(长时间运行的事务,即使我注意到几乎所有的表对象都被锁定了!),

4

1 回答 1

1

Sync Fx 不会显式地发出锁。

就像任何其他数据库应用程序一样,在同步期间,某些行将在应用更改时被锁定。它是否只锁定几行或整个表取决于 SQL Server 从行、页或表中提升或升级锁。

因为,它就像任何其他数据库应用程序一样,您可以使用相同的技术来调查锁定问题(例如,分析、sp_who 等...)

如果您的同步组/同步范围很大(很多表),您可以考虑将它们分解为更小的组,以便它们可以更快地提交并减少潜在的并发问题。如果您更新的行数较少,频繁同步也将有助于减少锁定问题的可能性。

于 2013-05-13T03:29:00.767 回答