0

我有一个情况,我确信已经被很多很多其他人解决了。我对如何解决它有一个想法,但是当我研究时,似乎很多人都没有实现我的想法。

这是我们所处的状况——

--我们有一个单独的数据库(SQL Server),它被结构化并用作 OLTP 数据库

--我们需要批量处理事务上下文中需要的数据

--我们需要通过内部用户界面获取最新报告

正如您可能已经猜到的那样,问题在于当我们将数据批处理进出 OTLP 数据库时,它会竞争资源,并且在某些情况下会锁定事务表。

我想做的是引入第二个数据库,让这两个数据库镜像,并且只让事务应用程序可以访问一个数据库。如果数据需要批量输入或输出事务数据库,它会输入或输出辅助的非事务数据库,并且镜像将负责同步。

当我研究这种方法时,我没有得到很多成功。

有没有更好/更被接受的方式来处理这个问题?

4

1 回答 1

0

只是我的意见,无法找到执行相同搜索的数字,但我认为批处理到镜像数据库以让它处理同步会导致完全相同,或者可能更糟糕的锁定。

我建议作为启用快照隔离 (ALLOW_SNAPSHOT_ISOLATION) 和 READ_COMMITTED_SNAPSHOT 的第一步。

https://msdn.microsoft.com/en-us/library/tcbchxcb(v=vs.110).aspx

https://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/

请注意 Brent Ozar 关于可能产生的影响的警告,如果您有长时间运行的事务性事务,您期望跨多个线程同步结果。

于 2016-02-19T20:03:21.287 回答