MySQL数据库分库分表是为了解决数据库数据量过大导致性能变低的问题。
1. mysql的分片方式
* 垂直分片:提高数据IO性能
特点:1)每个库(表)的结构都不一样
2)每个库(表)都至少有一列一样
3)每个库(表)的并集是全数据库的量
优点:结构清晰
缺点:1)如果单表数据量大,读写压力大
2)会受到业务的影响
3)部分业务无法关联
* 水平分片:突破单表数据极限
特点:1)每个库(表)的结构都一样
2)每个库(表)的数据都不一样
3)每个库(表)的并集是全数据库的量
优点:1)性能提高
2)提高了系统的稳定性和负载能力
3)拆分的表的结构相同,改造较少
缺点:1)数据的扩容很有难度,维护量大
2)分片事务的一致性问题多
2. 分库分表的常用策略
* 取模分片。优点:数据存放均匀。缺点:扩容需要大量数据迁移。
* 范围式分片。优点:扩容不需要大量数据迁移。缺点:数据存放不均匀
* 根据实际需要,灵活制定分片需要。