Sql server 扩展用于web的SQL Server(单写器多读器)

Sql server 扩展用于web的SQL Server(单写器多读器),sql-server,scaling,Sql Server,Scaling,有没有人有过以多读单写方式扩展SQL Server的经验。如果没有人能为阅读密集型web应用程序推荐合适的替代方案,那么他们在方面有经验,我没有任何针对您的场景扩展SQL Server的经验。 然而,对于读密集型应用程序,我将考虑减少数据库上的负载,并使用类似或的缓存策略 我知道有两种方法: 将整个数据库加载到缓存中,并管理添加和更新缓存中的项 仅在请求项时将其添加到缓存,并在执行写入操作时将其删除 我没有任何针对您的场景扩展SQL Server的经验。 然而,对于读密集型应用程序,我将考虑减少

有没有人有过以多读单写方式扩展SQL Server的经验。如果没有人能为阅读密集型web应用程序推荐合适的替代方案,那么他们在

方面有经验,我没有任何针对您的场景扩展SQL Server的经验。 然而,对于读密集型应用程序,我将考虑减少数据库上的负载,并使用类似或的缓存策略

我知道有两种方法:

  • 将整个数据库加载到缓存中,并管理添加和更新缓存中的项

  • 仅在请求项时将其添加到缓存,并在执行写入操作时将其删除


  • 我没有任何针对您的场景扩展SQL Server的经验。 然而,对于读密集型应用程序,我将考虑减少数据库上的负载,并使用类似或的缓存策略

    我知道有两种方法:

  • 将整个数据库加载到缓存中,并管理添加和更新缓存中的项

  • 仅在请求项时将其添加到缓存,并在执行写入操作时将其删除


  • 某种形式的复制可以做到这一点。

    您当然需要更改应用程序代码

    有些人使用分区表,不同的行范围存储在不同的服务器上,并与视图合并。这对应用程序来说是不可见的。我认为这是一种实践


    通过设计数据库、应用程序和服务器配置(SQL详细信息-数据位置/log/system/SQL二进制文件/tempdb),您应该能够处理相当好的负载。如果不需要的话,尽量不要让事情复杂化。

    某种形式的复制可以做到这一点。

    您当然需要更改应用程序代码

    有些人使用分区表,不同的行范围存储在不同的服务器上,并与视图合并。这对应用程序来说是不可见的。我认为这是一种实践


    通过设计数据库、应用程序和服务器配置(SQL详细信息-数据位置/log/system/SQL二进制文件/tempdb),您应该能够处理相当好的负载。如果没有必要,尽量不要让事情复杂化。

    这可能取决于两件事:

  • 每一个字有多大
  • 读者需要实时数据吗
  • 写一篇文章会在写的时候挡住读者,但是如果每一篇文章都小而快,读者就不会注意到

    如果您卸载(比如)日终报告,那么您可以将负载批处理到单独的服务器上,因为读卡器不需要实时数据。这是有道理的

    主服务器上的写入必须同步到卸载的辅助服务器。。。这将作为同步过程的一部分阻止同步,并且您添加了一个开销负载来管理同步

    大多数应用程序的阅读率都在95%以上。例如,更新或删除是先读后写


    我的选择是(可能是基于低写入量和它是一个web应用程序)在DB服务器中扩展和填充尽可能多的RAM,为数据库的数据和日志文件提供单独的磁盘路径。

    这可能取决于两件事:

  • 每一个字有多大
  • 读者需要实时数据吗
  • 写一篇文章会在写的时候挡住读者,但是如果每一篇文章都小而快,读者就不会注意到

    如果您卸载(比如)日终报告,那么您可以将负载批处理到单独的服务器上,因为读卡器不需要实时数据。这是有道理的

    主服务器上的写入必须同步到卸载的辅助服务器。。。这将作为同步过程的一部分阻止同步,并且您添加了一个开销负载来管理同步

    大多数应用程序的阅读率都在95%以上。例如,更新或删除是先读后写


    我的选择是(可能是基于低写入量和它是一个web应用程序)在DB服务器中扩展和填充尽可能多的RAM,为数据库的数据和日志文件提供单独的磁盘路径。

    写入程序总是在争用行上阻塞读卡器,这取决于锁定粒度。如果您已经向外扩展(意味着联合和分区视图),则仅针对正在编写的分区。无论您如何扩展/卸载,写入都必须发生,但复制etcIf会发生更多的情况。我理解您的意思是正确的,您指的是从写入更新读取实例(即从复制)时发生的写入?确切地说。对不起,我不清楚。请问数据库有多大?我想问的是……目前的估计是500 GB左右,还不错。只要添加尽可能多的内存。。。64位上的2TB。。。在我的书签中也发现了这一点:写入程序总是阻塞争用行上的读卡器,这取决于锁定粒度。如果您已经向外扩展(意味着联合和分区视图),则仅针对正在编写的分区。无论您如何扩展/卸载,写入都必须发生,但复制etcIf会发生更多的情况。我理解您的意思是正确的,您指的是从写入更新读取实例(即从复制)时发生的写入?确切地说。对不起,我不清楚。请问数据库有多大?我想问的是……目前的估计是500 GB左右,还不错。只要添加尽可能多的内存。。。64位上的2TB。。。在我的书签中也找到了此项: