从零开始java数据库篇(五):Mysql的分库分表

本文详细探讨了Mysql的分库分表,包括分库分表的原因、原则、类型以及垂直分割和水平分割的演进、优缺点。在实践中,分库分表有助于解决数据库性能瓶颈,但也会带来事务处理、跨库查询等挑战,需要通过分布式事务和中间件来解决。
摘要由CSDN通过智能技术生成

目录

 

  一:Mysql的分库分表

二:为什么要进行分库分表

三:分库分表的原则

1.分库分表的结构视图,这里列出几种数据依赖结构来说明。

2.分库分表的类型

3.垂直分割(分库/分表)

(1)垂直分库的演构

(2)垂直分表演构

(3)垂直分库分表分割原则以及特征

4.水平分割

 (1)水平拆分的演构

(2)水平拆分的依据原则

(3)水平拆表产生的难点

5.垂直拆分和水平拆分的各自的区别联系

  (1)侧重点不同:

  (2)数据完整性:

 (3)产生问题的复杂程度

 6.总结

四:分库分表问题以及解决方案

1.事务问题

2.跨库跨表查询统计分页等


 

  一:Mysql的分库分表

 

  对于Mysql进行分库分表我们需要明白以下几点,整个学习过程都是基于以下:

(1)为什么要进行分库分表

(2)分库分表的原则

(3)分库分表产生额外的技术难点

二:为什么要进行分库分表

  我们来讨论分库分表的原因就是为什么要进行分库分表?什么样的场景下要分库分表?

 首先要说明,分库分表实在数据库层面产生了瓶颈。简而言之,数据库的分库分表一定是在应用程序的合理架构下,才需要考虑这样的技术实现。在生产中,一定是先应用层次解决瓶颈然后在对数据库层面优化,也就是说,在应用层面,如果项目还是个单体或者垂直应用,我们强烈建议先对项目进行结构优化(比如集群或者Soa或者微服务化)。

  其次,我们在什么样的场景下实现数据库的分库分表?基于数据库的存储型性能这里仅对Mysql做讨论,毕竟Mysql是大多数公司使用的,在Mysql的官方文档上说明过 500W数据量是Mysql承载的极限,超过500W性能会大幅度降低。但是在实际生成中我们曾经测试过200W数据量是Mysql的性能转折点。因此在数据量超过200w我们建议分库分表。

  最后,也是可能比较使用的一点,更具实际上产场景分库分表。这种情况这里制作一个简单的说明,因为这种是基于公司实际的胜场业务来实现的。我们这里在后面会做一个简单的讨论。

三:分库分表的原则

1.分库分表的结构视图,这里列出几种数据依赖结构来说明。

    (1)完全不相干的表(这种表依赖基本不存在的,即使是不相关的模块)

       

    (2)包含关系的表(表B完全包含A的,这里使用也不符哦)

       

     (3)交际关系的表

      

2.分库分表的类型

     数据库分库分表分为2中分割原则:水平分割和垂直分割

      垂直分割:又称结构分割,通常是模块表之间分割

      水平分割:又称业务分割,通常将一个表数据按照一定的规则分割到不同的表中

3.垂直分割(分库/分表)

  可以这么说,很多公司在进行组建分割原则时,垂直分割一定是优先于水平分割,也就说分割时优先考虑先进性垂直分割。

垂直分割又称结构分割,这是我们之前公司的叫法,是指将业务模块关联最小的表之间进行分割。比如一个后管系统最后可以拆分成CMS࿰

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值