读写分离是中型规模应用的数据库系统常见设计方案,通过将数据从主服务器同步到其他从服务器,提供非实时的查询功能,扩展性能并提高并发性。
数据库的读写分离的好处如下:
通过将“读”操作和“写”操作分离到不同的数据库服务器上,降低对主服务器的CPU、内存、存储、网络资源的争用;
主服务器的增删改进行时,不影响查询服务器的查询,降低阻塞的发生,提高了并发性;
建立容灾副本甚至实现异地容灾,在发生灾难时,可以减少数据的损失。
为了实现数据库读写分离,应用程序需要作如下调整:
在应用程序的配置文件中设置两个数据库连接字符串,一个指向主服务器,一个指向查询服务器;
增删改或者实时性查询使用指向主服务器的连接字符串;
允许非实时的查询及报表请求使用指向查询服务器的连接字符串。
SQL Server提供了三种技术,可以用于读写分离的实现:日志传送、事务复制和SQL Server 2012中新增的功能Always On技术。这三种技术的比较如下: