首页 > 代码库 > SqlServer 并发系列之读写分离

SqlServer 并发系列之读写分离

数据库处理高并发两种方式 垂直和水平 区分

垂直区分[分布式数据库]: 按模块独立出单独数据库。

 

缺点:对系统各个模块设计要较高要求,高内聚低耦合,改造难度较大。

       同时如果数据达到一个新的临界点,还是会存在访问性能低下的可能,比如一个订单数据库,订单数量达到1000万单。

水平区分[读写分离]: 剑圣分身的方式,分为 主数据库(真身)和多个查询数据库(镜像),主数据库承担 增删改和实时性查询 功能,

查询服务器承担带条件的大数据量的查询。

 

读写分离好处
1.将读和写操作分离到不同的数据库服务器上.降低对主服务器资源争用。
2.主服务器增删改进行时,不影响查询服务器的查询。降低阻塞的发生。
3.应用长须提交报表、不合理的查询请求时,不会导致长时间的锁表。
4.容灾机制容许 主服务器发生故障时,查询服务器接管用户请求。

做法
1.应用程序配置中设置两个连接字符串。一个指向主服务器,一个指向查询服务器。
2.增删改或者实时性查询指向主服务器的连接字符串.
3.容许非实时的查询及报表请求指向查询服务器的连接字符串。

主服务器数据同步技术参数

摘自 http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=476

个人疑问和想法:

还看到一种做法是 是将5000万条数据 切分到不同数据库,每次插的时候 会先将数据和ID的关系插入到一个路由数据库,查询的时候先从路由数据库查询此ID对应的数据库,然后再去查改数据库的数据。

这种方式旨在解决数据量过大的问题,似乎行之有效,每个数据库的数据不相同。但是怎么考虑容灾机制? 

这两种方式究竟如何取舍?