网站集约化建设实施方案,三台县城乡建设网网站,长沙企业网站建设多少钱,360网址大全为什么需要分库分表
分库分表是因应数据库处理大规模数据时所面临的挑战而出现的解决方案.
// 提高性能
单个数据库在数据量增加时容易出现性能瓶颈。分库分表可以减轻单个数据库的负担#xff0c;提高系统的读写性能和响应速度.
// 提高并发能力
大量用户同时访问数据库可能…为什么需要分库分表
分库分表是因应数据库处理大规模数据时所面临的挑战而出现的解决方案.
// 提高性能
单个数据库在数据量增加时容易出现性能瓶颈。分库分表可以减轻单个数据库的负担提高系统的读写性能和响应速度.
// 提高并发能力
大量用户同时访问数据库可能导致数据库的性能下降。通过分库分表可以将用户请求分散到多个数据库或表上提高并发处理能力.
// 降低单点故障风险
单个数据库出现故障可能导致整个系统不可用。分库分表可以将数据分布到多个节点上降低单点故障对系统的影响。
// 优化数据存储和查询
针对特定的业务需求通过分库分表可以优化数据存储结构使得数据存储更合理、查询更高效。
// 扩展性
随着业务的增长,单个数据库可能无法满足高并发和大数据量的需求。分库分表可以水平扩展将数据分散到多个节点上增加系统的扩展性和容量。
// 节约成本
使用分库分表可以根据需求灵活扩展数据库而无需立即投入大量成本购买高性能的硬件设备或数据库服务。数据库瓶颈
不管是IO瓶颈还是CPU瓶颈最终都会导致数据库的活跃连接数增加进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是可用数据库连接少甚至无连接可用。接下来就可以想象了吧并发量、吞吐量、崩溃.
// IO瓶颈
// 磁盘IO
磁盘读IO瓶颈热点数据太多数据库缓存放不下每次查询时会产生大量的IO降低查询速度 - 分库和垂直分表。
// 网络IO
网络IO瓶颈请求的数据太多网络带宽不够。- 分库// CPU瓶颈
// SQL问题
如SQL中包含joingroup byorder by非索引字段条件查询等增加CPU运算的操作. - SQL优化,在业务层计算减轻数据库压力.
// 单表数据量太大
查询时扫描的行太多SQL效率低CPU率先出现瓶颈。- 分库分表分库分表
水平分库
// 原理
以某个字段为依据按照一定策略hash、range等将一个库中的数据拆分到多个库中.
// 要求
1.每个库的结构都一样.
2.每个库的数据都不一样没有交集.
3.所有库的并集是全量数据水平分表
// 原理
以字段为依据按照一定策略hash、range等将一个表中的数据拆分到多个表中.
// 要求
1.每个表的结构都一样.
2.每个表的数据都不一样没有交集.
3.所有表的并集是全量数据.垂直分库
// 原理
以表为依据按照业务归属不同将不同的表拆分到不同的库中.
// 要求
1.每个库的结构都不一样.
2.每个库的数据也不一样没有交.
3.所有库的并集是全量数据.垂直分表
// 原理
以字段为依据按照字段的活跃性将表中字段拆到不同的表主表和扩展表中
// 要求
1.每个表的结构都不一样
2.每个表的数据也不一样一般来说每个表的字段至少有一列交集一般是主键用于关联数据.
3.所有表的并集是全量数据分库分表步骤
1.根据容量当前容量和增长量评估分库或分表个数 . 2.确定分库分表的key尽量均匀. 3.确定分库分表的规则 4.迁移数据(一般双写)
总结
以上介绍了分库分表的一些理论知识下一篇我会以水平分表为例《Mybaits拦截器实现水平分表》来加深理解.
参考文章 https://juejin.cn/post/6844903863464493064 https://www.cnblogs.com/qdhxhz/p/11608222.html