mssql sqlserver 分库分表思路简介


摘要:
当系统并发量超级大的时候,我们需减轻单台DB所承受的压力时,需将一个DB分散到多台服务器上运行,对外提供DB服务,
下文将数据库分拆所涉及的知识点进行列举说明。


1.DB数据垂直拆分

垂直拆分:
将数据库中许多表,根据某一规则(例:业务规则),分别放入到不同的数据库中,并部署到不同的服务器上。
常见的垂直拆分有:
单点登录、各种分布式系统
————————————
例:
用户信息表 部署在服务器DB1上
售前管理 部署在服务器DB2上
互联网客户管理 部署在服务器DB3上
…..

垂直拆分优点:
1.拆分后数据库存储更加清晰,方便后续服务扩容
2.BI报表更易生成
3.方便对重点数据进行管理和监控
垂直拆分的缺点:
1.业务表和用户表之间无法join ,导致这类关联数据非常复杂
2.增加代码编写的复杂度,事务编写更复杂



2.DB数据水平拆分

水平拆分的方式:是将一张表里面的根据不同的规则放入不同的库中。
例:
将QQ用户表:
根据号段:1000~10000 放入服务器DB1上
根据号段:10000~20000 放入服务器DB2上
根据号段:20000~30000 放入服务器DB3上
……

水平拆分的优点:
1.当某一业务的数据达到巨大时,我们必须通过水平拆分使某一业务可以支持大量访问
2.代码层改动少,只需修改数据访问规则
3.水平拆分后,系统的稳定性增加,不会出现某一业务无法打面积访问和使用
水平拆分的缺点:
1.水平拆分后,业务数据都分算到不同的服务器上,对报表的获取加大难度
2.水平拆分后,事务性操作同垂直拆分一样,操作变的困难
3.数据分页,写法变得复杂
4.多数据管理存在问题