分库分表
一、为什么要分库分表
单机mysql带来的问题:
1、mysql单机,扛不住并发
2、mysql单机磁盘容量快满
3、mysql单表数据量太大,sql执行越跑越慢
利用分库分表将单机拆分成多机,带来的好处。
1、可承受的并发增加数倍;
2、磁盘容量增加数倍,使用率降低;
3、单表数据量缩小,sql语句执行速度加快。
二、分库分表的中间件
数据库中间件:用来做数据的分发。
有两种:proxy类和client类
cobar、TDDL、sharding-jdbc、atlas、mycat。
cobar :阿里开源,代理中间件,不支持读写分离,存储过程、跨库join和分页等,已经没啥人用了。
TDDL:淘宝,client。不支持join、多表查询,只支持curd,读写分离,用的人不多。
atlas:360开园,proxy。用的人不多。
sharding-jdbc:当当开源 client。sql语法支持的多,支持分库分表、读写分离、分布式id生成等等。大部分公司的选择。不要部署,运维成本低,但是各个系统都要耦合sharding-jdbc依赖。
mycat:proxy方案。势头很猛。