在Master更新时使用Slave数据库作为主数据库?

时间:2011-07-10 09:10:18

标签: asp.net sql-server sql-server-2008

我目前遇到的问题是数据库的性能受到数百万行更新的影响(需要3天或更短时间,因此我们通常会在周末运行)

但是,由于该网站是实时的,因此搜索性能会受到影响。有时,在sql server中,默认情况下,默认情况下,一个3秒的查询可以提取130万条记录和页面。这显然创造了一个没有人想要(或者可以承受)的用户体验。

我现在的问题。如果我在主服务器上设置复制到同一服务器上的从服务器;我是否可以将网站指向Slave并避免对性能产生影响?或者它只是重复同样的问题,因为无论如何,Master会将任何更新推送到Slave?

2 个答案:

答案 0 :(得分:0)

我不认为复制会在这里帮助你,它只会让源系统上的东西变得更糟糕恕我直言。

是否有可能在更新进行时为运行查询的用户创建数据的静态副本?为了报告不需要最新的解决方案,我在几种情况下使用两个模式完成了这个 - 一个用于查询表的静态版本,另一个用于完成工作;工作完成后,切换。我在这里更详细地介绍了这种方法:What is the best way to refresh a rollup table under load?

也许另一个想法是让您的更新更有效率,这样他们不需要3天?你只在长周末做这件事吗?

答案 1 :(得分:0)

问题是,您网站的性质是什么?用户是仅将其用于“搜索”还是CRUD操作?如果它仅用于“搜索”和报告生成,那么我同意@Aaron。您可以将某个数据库用于报告目的,甚至可以使用“日志传送”以非常短的间隔自动更新报告数据库。

用户是否可以在更新过程更新记录的同时更改数据?在这种情况下,您必须使用更新作业更新主数据库,然后再次使用Slave数据库更新主数据库以进行更改。