0

我们为客户的 .NET Web 应用程序配置了 SQL Server 2012 数据库事务复制,以便在不同的 SQL Server 上分发 SQL 事务和报告。

我们已经在 SQL-Node1 上实现了事务复制,它作为主数据库服务器工作,我们在 SQL-Node2 上配置了主数据库的复制,以将报告提取到我们的 Web 应用程序中,该应用程序有大量的事务和数据从 Excel 工作表条目上传每天大约有 1000 万个条目。

在两个 SQL Server 2012 实例上配置复制后,几周后我们遇到了一些性能问题,并发现在将文件上传到数据库期间某些资源被锁定,这就是应用程序无法访问这些表和数据的原因。还发现当用户访问我们的 Web 应用程序时,服务器在白天执行速度太慢。

现在我们正在寻找在 SQL Server 2012 的不同 3 个节点上分配负载。Web 应用程序将在 SQL-Node1 上访问和处理数据,报告查询从 SQL-Node2 获取数据,SQL-Node3 将用于上传 Excel 表将数据复制到所有其他 SQL 节点上的数据库。

当前设置,所有具有 Windows Server 2008 Standard 和 SQL Server 2012 Enterprise Edition 的服务器。

数据库大小约:15 GB/使用的复制:在 SQL 节点 1 上配置的事务/分发者角色/在 SQL 节点 2 上配置的订阅者角色。

我们正在寻找解决上述问题的解决方案,可以在所有 SQL 节点之间分配不同的负载(报告、数据上传、事务)和复制数据。

SQL Server 2012 HA、SQL Server Replication 或 SQL Server Mirroring 中的哪个功能在上述场景中表现良好?

快速响应将不胜感激......

4

2 回答 2

1

因为您在多个节点上发生了更改(节点 1 处的事务数据,节点 3 处的 excel 上传),所以“以上都不是”。所有上述技术都建立在数据更改发生在一个位置并传播到其他位置的基础上。您可以查看点对点复制,但这似乎有点矫枉过正。

如果是我,我会尝试诊断为什么您的文件上传过程会降低性能并修复/解决该问题。一旦你这样做了,我会将该过程移回节点 1 并实施一个可用性组来满足你的报告需求(加上 HA 的额外好处)。

于 2013-07-20T12:33:26.057 回答
0

所有的技术都会在一次大交易中完成的大数据导入上陷入困境。我建议将其作为类似 ETL 的功能。导入临时表并将数据以小块的形式迁移到生产表中(测试许多数据行大小以找到最适合您的环境的大小)。2台服务器应该可以在集群上进行复制以实现您正在谈论的工作负载的HA。

于 2014-01-04T08:25:05.917 回答