MySQL运维3-分库分表策略
1.侯哥的Python分享2.MySQL基础1-关系型数据库与非关系型数据库3.MySQL基础2-数据库及表的操作4.MySQL基础3-数据库增删改操作5.MySQL基础4-数据查询6.MySQL基础5-用户及权限管理7.MySQL基础6-常用数据库函数8.MySQL基础7-约束9.MySQL基础8-多表查询10.MySQL基础9-事务基础11.MySQL高级1-存储引擎12.MySQL高级2-SQL性能分析13.MySQL高级3-索引的结构和分类14.MySQL高级4-索引的使用规则15.MySQL高级5-SQL优化16.MySQL高级6-视图17.MySQL高级7-存储过程18.MySQL高级8-触发器19.MySQL高级9-锁20.MySQL高级10-InnoDB引擎存储架构21.MySQL高级11-后台进程22.MySQL高级12-事务原理 23.MySQL高级13-MySQL管理工具24.MySQL运维1-日志25.MySQL运维2-主从复制
26.MySQL运维3-分库分表策略
27.MySQL运维4-Mycat入门28.MySQL运维5-Mycat配置29.MySQL运维6-Mycat分库分表之垂直分库30.MySQL运维7-Mycat分库分表之取模分片31.MySQL运维8-Mycat分库分表之范围分片32.MySQL运维9-Mycat分库分表之枚举分片33.MySQL运维10-Mycat分库分表之一致性哈希分片34.MySQL运维11-Mycat分库分表之应用指定分片35.MySQL运维12-Mycat分库分表之按天分片36.MySQL运维13-Mycat分库分表之按月分片37.MySQL运维14-管理及监控工具Mycat-web的安装配置38.MySQL运维15-一主一从读写分离39.MySQL运维16-双主双从读写分离一、介绍
单库瓶颈:如果在项目中使用的都是单MySQL服务器,则会随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行存储,存在一下性能瓶颈:
- IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率低下,请求数据太多,带宽不够,网络IO瓶颈。
- CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。
分库分表:就是将数据分散存储,是将单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。
二、拆分策略
2.1 垂直分库
特点:以表为依据,根据业务将不同表拆分到不同库中。
-
- 每个库的表结构都不一样
- 每个表的数据也不一样
- 所有库的并集是全量数据
2.2 垂直分表
特点:以字段为依据,根据字段属性将不同字段分到不同表中 。
-
- 每个表的结构都不一样
- 每个表的数据也不一样,一般通过一列(主键/外键)管理
- 所有表的并集是全量数据
2.3 水平分库
特点:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中
-
- 每个库的表结构一样。
- 每个库的数据都不一样
- 所有库的并集是全量数据
2.4 水平分表
特点:以字段为依据,按照一定策略,将一个表的数据拆分到多个表中。
-
- 每个表的结构都一样
- 每个表的数据都不一样
- 所有表的并集是全量数据
2.5 组合策略
在实际应用中,可以同时采用分库和分表的策略,根据业务需求和系统负载情况来选择合适的分库分表策略。
三、分库分别键
3.1 业务键
根据业务需求,选择具有业务含义的键作为分库分表的依据,例如,按照用户ID分表
3.2 时间键
对于大部分应用来说,按时间进行分表是一个常见的选择,可以更容易地管理历史数据
3.3 哈希建
使用哈希函数将数据均匀地分散到不同的库或表中,以防止热点数据集中存储
3.4 范围键
按照数据范围进行分表,适用于数据按照某一范围规律增长的情况
侯哥语录:我曾经是一个职业教育者,现在是一个自由开发者。我希望我的分享可以和更多人一起进步。分享一段我喜欢的话给大家:"我所理解的自由不是想干什么就干什么,而是想不干什么就不干什么。当你还没有能力说不得时候,就努力让自己变得强大,拥有说不得权利。"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?