一.什么是分库分表.
分库分为垂直分库和水平分库.
1.垂直分库.(大系统拆成小系统)
根据不同的业务.比如订单,库存.
2.水平分库.
根据id最后一位数/库的数量(2),余0,就是db1,余1就是db2.
分表分为垂直分表和水平分表.
3.垂直分表.(大表拆成小表)
表之间字段不一样有共同的字段,例id,可以根据并集能查出所有数据.
4.水平分表.
如果只有分表,完全可以根据id最后一位数/库的数量来分表,但是如果有分库分表,分库要根据id倒数第二位数/库的数量来分表.
查询使用 union all 将所有数据查出.
二.为什么要用分库分表?
单库:单库性能是一定的,所以他的io读写是一定的.如果想增加数据库性能,可以垂直分库,即订单库,库存库等去支撑.
也可以通过水平分库,即多个订单库去支持订单业务.
单表:单表中字段太多,字段太多,开销增加,可以垂直分表,即大表转小表,这样每次查询会少很多不必要的字段,
也可以通过水平分表,比如根据数量1-2000,根据时间,根据省份等等,拆成字段相同数据不同的多个表来支撑业务.
三.怎么用分库分表?
推荐使用mycat数据库中间件,包括数据库读写分离也可以通过mycat来解决.
四.分库分表如果不够用了,怎么解决?
冷热数据分离.
思想:比如保存订单信息,保存双份,在表1和表2中,表中使用定时任务定时删除30天以前的订单,查询先会去表1查,有就有,没有去表2查.