我们已经写在ASP.NET中使用MS SQL Server作为后台数据库的基于浏览器的Intranet应用程序。我们的一位客户始终可用性组设置有两个节点。我们的应用程序的请求被路由(通过可用性组侦听)到初级R / W节点和我们的客户端使用R / O节点为他们的定制报告(晶体的报告)。
随着用户数量的不断增长,我们得到的性能问题 - 主要是CPU相关。
我们希望客户增加更多的CPU,而他们希望我们启动路由只读查询到R / O节点。
我们真的很犹豫,因为这些将是应用的变化,真正不平凡的:
最好是要发送的相关报告(只),以辅助节点,使CPU密集型报表不会降低您的在线数据库的查询性能。您的交易行为没有得到来自非事务性使用状况的影响。
然而,这并不意味着你需要做辅助节点上的所有R / O查询。比方说你有一个事务性操作,其首先需要具有行锁定选择操作,你不应该从主动节点被动节点和DML操作执行读取操作。
我们可以说,所有操作查询可以从主动节点进行查询,而被动节点(S)更适合用于长期刚刚运行报告。
关于第二个问题如果第二个节点配置为异步,则是可能会有一些延迟,还对日志传送失败的情况下,可以看到旧数据。
对于第三个问题,它实际上取决于当前/未来/高峰小时的系统负载。这是很难说这个或那个。这也取决于预算,如果你能买得起它,你可以有更多的1点。这一切都取决于。但是,请记住,RDBMS系统是不是水平扩展十分可行的。