我继承了一个系统,其中有3个数据库运行在一台服务器上( server 2012):
StagingDB (250)ReportingDB (350)AppDB (500)。每天都会发生以下情况:
StagingDBReportingDB的当前内容从头开始重新生成StagingDB。这个建筑需要5-6个小时。ReportingDB上运行聚合摘要KPI,并将它们存储在AppDB中。这个过程需要1-2个小时。问题
ReportingDB或AppDB上操作的任何存储过程的性能对最终用户来说都是一种糟糕的体验。目标
我们正在探索解决办法,为我们解决这个问题。即我们想:
逼近
我们正在探索这些潜在的解决方案:
Build服务器实例上构建所有数据,然后手动将表复制到Production服务器实例。active数据库的表中设置两个带有标志的server实例。在服务器上完成日常构建时,只将用户事务数据从active实例复制到服务器,然后将新构建的实例设置为active,将另一个设置为inactive。应用程序将在每次加载时检查活动服务器。(1)上面似乎不太适合我们,因为在事务隔离快照(2)中执行合并似乎是不可能的,上面的快照(2)似乎相当麻烦,每天都要在一个大型事务中复制几百GB的大容量数据。
实现我们的目标的最佳实践是什么?我们希望得到社区的一些建议。
发布于 2015-10-28 18:34:11
有几件事在我的脑海中/在帖子中没有那么清楚:
- If you're using enterprise edition, partition switching might provide an easy trick.
- Otherwise I can just come up with small or bigger hacks depending on your environment (installing new versions of views / aliases / procedure that access the tables, sp\_rename, different schema etc)
这个问题相当广泛,而且与编程没有多大关系,因此dba站点可能更适合这一点。
https://stackoverflow.com/questions/33390647
复制相似问题