我有一种情况,我确信已经被很多很多人解决了。我对如何解决它有了一个想法,但是当我研究时,似乎很多人都没有实现我所想的。
以下是我们所处的事态 -
- 我们有一个数据库(SQL Server)结构化并用作OLTP数据库
- 我们需要批量处理交易上下文中所需的数据
- 我们需要通过内部用户界面进行最新报告
正如您可能已经猜到的那样,问题在于,当我们将数据批量输入和输出OTLP数据库时,它会竞争资源,在某些情况下,还会锁定事务表。
我想要做的是引入第二个数据库,让2个数据库镜像,并且只允许事务应用程序访问一个数据库。如果需要将数据批量输入或输出事务数据库,它将进入或退出辅助非事务性数据库,并且镜像将负责同步。
当我研究这种方法时,我没有多次点击。
是否有更好/更可接受的处理方式?
答案 0 :(得分:0)
就我的观点而言,我无法找到执行相同搜索的数字,但我认为批量处理镜像数据库以使其处理同步会导致完全相同或可能更糟的锁定。
我建议首先启用快照隔离(ALLOW_SNAPSHOT_ISOLATION)和READ_COMMITTED_SNAPSHOT。
https://msdn.microsoft.com/en-us/library/tcbchxcb(v=vs.110).aspx
请注意Brent Ozar关于如果您长时间运行事务性事务可能会产生影响的警告,您希望跨多个线程获得同步结果。