什么是mysql分库_mysql分库分表

一、为什么要分库分表

1.网站架构:

IE ---> tomcat(登录、注册、下单商品) ---> mysql

2.高并发下,数据库优化

1.换数据库,Oracle、mongodb

2.分库分表

3.读写分离

二、什么是分库分表

500w到1000w的数据,会引发问题

1.分库分表的思路

624d7216b1da5a003427c654fba348ed.png

2.分库

垂直

afdc048c851335b910f6d0b682b03688.png

水平

bbc028c10cc544d00186b0bc32e18e78.png

3.分表

垂直

3d7071c40edfd0016f04fd43ee593a02.png

水平

cebb24b69a9e28ddb63be6407635bb82.png

4.垂直分特点、优缺点

垂直分特点:

1)每个库(表)的结构不一样

2)每个库(表)的数据至少一列一样

3)每个库(表)的并集是全量数据

总结:按照字段拆分(多表字段拆成少表字段)

优点:

1)拆分后业务清晰,专库专用

2)实现动静分离、冷热数据分离设计体现

3)数据维护简单、按业务不同放在不同的机器上

缺点:

1)如果单表数据量大,读写压力大

2)部分业务无法join

5.水平分优缺点

水平分特点:

1)每个库(表)的结构都一样

2)每个库(表)的数据都不一样

3)每个库(表)的并集是全量数据

总结:按照内容拆分

优点:

1)单个库(表)的数据一定量减少,有助于性能提高

2)提高了系统的稳定性和负载能力

缺点:

1)数据的扩容很有难度(取模扩容rehash)

2)拆分规则很难抽象出来

3)部分业务无法join

三、分库分表的一些方式

算法:

范围区分(range):

预定义list

取模hash

四、分库分表带来的问题,解决方案???

出现问题

1.维护成本

2.跨库join

3.分布式事务

4.分布式全局唯一id

方案:shardingsphere、mycat、tddl、atals

jdbc:

shardingshepre(sharding-jdbc)、tddl

95bc6c551c3323df4e19f9562631bfd9.png

eb8c9c0b3cfb3da5e7cefa1f7d335e9f.png

逻辑表,根据id改成物理表

proxy代理层:

mycat、tddl

02c0deb59bf59fa7aeb6f3d41b8264c9.png

对比:

jdbc应用层性能好一些,直接在内存;proxy多了四次请求

proxy代理层跨语言和无感知

jdbc跨数据库,proxy不可以跨数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值