我正在开始开发一个新的网络应用程序,该应用程序需要从一开始就进行扩展设计。
我正在研究数据库复制和主/从复制(或发布者/订阅者 - 我认为这些是相同的东西,但如果我错了,请纠正我)的概念。
我一直在阅读的拓扑结构涉及主服务器处理所有数据库写入操作,从服务器处理所有读取操作。
我的问题是:
在从服务器必须尽可能接近实时数据的情况下,事务复制对主数据库的负载是否会比直接读取要小?
此外,从属服务器的性能是否不会受到事务复制的影响,就像它被写入一样?
总体而言,感觉就像引入复制后操作数量成倍增加
例如
- 数据被写入主数据库(由客户端)
- 从主数据库读取数据(用于复制)
- 数据写入从属数据库(用于复制)
- 客户端从从属数据库读取数据
对我来说,感觉好像添加额外服务器所获得的任何好处都会在增加额外的读写过程时丢失。
我是否把这个问题看得太简单了?或者我是否忽略了什么?
谢谢
答案1
发布方的 SQL Server 复制通过应用程序提供,该应用程序直接从事务日志中读取数据,而不是从实际的 SQL Server 数据库表中读取数据。
在订阅者端,数据通过存储过程逐行写入 SQL Server(默认)。
我管理的一些非常大的应用程序不需要将读取卸载到另一个 SQL Server。只有极少数的应用程序实际上需要扩展。如果购买了足够大的服务器,99% 的时间只需设置适当的索引并正确设计服务器和存储即可处理巨大的工作负载。