【问题标题】:Transactional DB and Batch jobs事务数据库和批处理作业
【发布时间】:2016-02-19 19:50:33
【问题描述】:

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

这是我们目前的状况--

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

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

--我们需要通过内部 UI 获得最新报告

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

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

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

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

【问题讨论】:

    标签: sql-server database-mirroring


    【解决方案1】:

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

    我建议首先启用快照隔离 (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 的警告,如果您有长时间运行的事务性事务,您期望跨多个线程同步结果,可能会产生影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2018-04-16
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      相关资源
      最近更新 更多