垂直切分,按照功能模块或者业务维度将相关联的一类表部署在相同的数据库上(比如【SOA{Service-Oriented Architecture}】中每个服务都有一个单独的数据库)
水平切分,大表切分为小表(mysql单表超过1000万条记录后,查询性能会下降)10亿的表拆分为10张表,水平切分策略:一致性哈希,日期拆分,范围拆分
拆分如何解决跨库join
1在服务层之间调用
2全局表
3字段冗余
唯一主键,采用snowflake算法
分布式事务,采用最终一致性
如何权衡当前的存储需要优化,单表数据量到达了1000万条记录,并且还在持续增加
假如有业务要处理跨分片数据排序分页,则要手动拼接
Mycat原理
1 customer 不使用分库分表
2 item 跨库分表
3 t_order 单库分表
在用navicat连接mycat时候,有些逻辑表,直接点击会报错,但是查询界面写SQL语句不会报错