首先介绍一下什么是会数据库的分库分表?
- 分库分表方案是对[关系型数据库](https://www.yisu.com/mysql/)数据存储和访问机制的一种补充;
- **分库:**将一个库的数据拆分到多个相同的库中,访问的时候访问一个库;
- **分表:**把一个表的数据放到多个表中,操作对应的某个表就行 ;
数据库分库分表的原因?
如果一个网站业务快速发展,那这个网站流量也会增加,数据的压力也会随之而来,比如电商系统来说双十一大促对订单数据压力很大,Tps十几万并发量,如果传统的架构(一主多从),主库容量肯定无法满足这么高的Tps,业务越来越大,单表数据超出了数据库支持的容量,持久化磁盘IO,传统的数据库性能瓶颈,产品经理业务·必须做,改变程序,数据库刀子切分优化。数据库连接数不够需要分库,表的数据量大,优化后查询性能还是很低,需要分库分表;
分库分表的好坏处?
1. 按照哈希的方式
优点:数据散列比较平均,单库单表访问压力分布比较均匀
缺点:预先需要做好容量规划,扩容方面不容易,需要重新进行数据hash迁移
适用场景:数据变更频繁,并发访问量比较高的情况下,可以利用多台机器将访问压力均匀分布,合理利用资源;
2. 按时间段或者按ID段进行划分
优点:可以持续扩容,降低单表压力
缺点:有时候业务数据上,存在着一部分的旧数据,但是这部分数据很少使用到,基于这样的分库分表的方式,不能充分的利用好系统资源;