我有一个数据库有90%的只读表。 10%的表具有可写的数据。 我们需要扩展ASP.NET应用程序。我们需要添加更多不写入数据库的用户。 我们正在考虑添加另一台服务器,并将需要只读访问权限的用户路由到该服务器。 有没有办法将一些表复制到另一个数据库服务器。 由于90%的数据不会改变,我们不想设置任何完整的数据库复制。 请指教。
我想反对“我们不想设置任何完整的数据库复制”,因为SQL Server 2012中有一个非常漂亮的function:AlwaysOn。
借此,您可以设置只读(同步或asynchronous)从属服务器,并使用新的连接代理自动将读取请求路由到一个或多个服务器。 它涉及一些关于连接请求的工作(特别是在连接string中添加READ_ONLY,以便代理可以正确redirect)。
这是一个非常简单的方法,可扩展到4个SQL服务器(一个主服务器,3个只读服务器)。
您为什么要尝试缩放应用程序? 你确定应用程序需要扩展吗? 你完全确定索引是否正确设置,以便读取尽可能快? 你只是记忆受限? 你受限于CPU吗? 你是否受到束缚? 通常使单个服务器更大比第二个服务器所需的SQL Server许可证便宜。
假设您的应用程序已完全调整…
如果您的用户需要读取数据,他们需要读取所有数据。 如果您100%肯定不需要读取所有数据,则可以使用SQL Server复制并在文章上使用filter,这样您只需复制一些数据。
如果你正在考虑去SQL Server 2012,你可以看看AlwaysOn,但这是一个企业版的function,所以许可证将是非常昂贵的。