当前位置: 首页 > news >正文

MySQL分库分表

何时需要分库分表

分库分表通常在以下场景中需要考虑:

  • 数据量过大:单表数据量超过千万级别,查询性能明显下降,索引效率降低。
  • 并发压力高:数据库连接数不足,频繁出现锁竞争或资源争用。
  • 业务解耦:不同业务模块需要独立维护数据,避免相互影响。
  • IO瓶颈(磁盘IO,网络IO)、CPU瓶颈(聚合查询,连接数太多)

 

分库:我本来一个数据库,我拆成多个数据库进行存储

分表:我本来一张表的数据,拆成多个表进行存储

垂直拆分

垂直分库

拆分成不同库里面存储不同业务数据。用的比较多,微服务常用


 垂直分表

把字段包含数据多的、不常用的分开。分表并不一定是在多个库,也可以在一个库里

比如:一些很长的数据,比如商品描述,文章等


水平拆分

水平分库

每个库存放的数据都不一样,应用根据路由规则去查询。

  • 按业务分库:例如订单库、用户库分离。
  • 按数据分片:如将订单库按地域拆分为orders_db_eastorders_db_west

 

水平分表 

也是根据路由规则去查询数据

 


    分库分表中间件

    常用工具简化路由逻辑:

    • ShardingSphere:Apache开源的分布式数据库生态。
    • MyCat:基于Proxy的分库分表方案。

    ShardingSphere配置示例(YAML)

     


    注意事项

    • 分布式事务:跨库操作需引入Seata等事务框架。
    • 跨分片查询:避免JOIN,改用冗余字段或业务层聚合。
    • ID生成:使用雪花算法(Snowflake)替代自增ID。
    • 扩容难度:预先设计好分片键的扩展性。

     

    相关文章:

  • 对神经正切核的理解和推导(1)
  • 浅析SpringBoot中的classpath
  • 互联网和以太网之是什么与区别
  • DVWA文件上传笔记
  • 踩坑记录:RecyclerView 局部刷新notifyItemChanged多次调用只触发一次 onBindViewHolder 的原因
  • 数据库调优与数据表的范式设计
  • LangGraph:部署智能应用
  • 在 .NET 环境下实现跨进程高频率读写数据
  • 再论自然数全加和-3
  • 使用CodeBuddy实现网页自动连点器
  • 【通用技巧】技术文章工业级指南:目标定位、架构设计与持续演进
  • java中的SPI(Service Provider Interface)机制解读
  • AWTK嵌入式图形框架开发备忘(二)
  • LangGraph 实战指南:长期记忆管理
  • 海外IP代理在跨境电商选品、运营、风控的实战应用解析
  • Java面向对象 一
  • 海思SVP_NPU开发适配
  • C++----Vector的模拟实现
  • windows中JDK切换版本
  • RPA+电子处方+在线问诊:数字药店APP智能化源码开发方案探索
  • 自己做网站 如何推广/网站优化排名易下拉软件
  • 郑州最好的网站建设/汕头网站排名
  • 济南天桥区做网站公司/qq推广网站
  • 做网站要几个部门组成/四川聚顺成网络科技有限公司
  • 成都个人网站制作公司/网络游戏推广平台
  • 专业做财经直播网站/做网站要多少钱