mysql 分表原理,分库分表原理介绍

朋也的博客 » 首页 » 文章

分库分表原理介绍

作者:朋也

日期:2020-06-03

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

拆分规则:

垂直拆分,水平拆分

举例:

表user

字段:id, username, password, email, address, gender, bio

垂直拆分后

表user

字段:id, username, password

表user_info

字段: email, address, gender, bio

对应的还有垂直分库,就是按照业务对数据库进行划分,比如用户信息相关的单独一个库,用户发的帖子相关的数据单独一个库(这也是最常用的)

水平拆分后

表user1

字段:id, username, password, email, address, gender, bio

表user2

字段:id, username, password, email, address, gender, bio

两张表结构一模一样,这种分表是在存数据的时候动手脚的,比如常见的对主键id取模,分两张表就%2,分3张表就%3

id % 2 == 0 -> user1

id % 2 == 1 -> user2

id % 3 == 2 -> user3

优劣:

垂直:

好处:可以根据业务进行划分,逻辑清晰

坏处:当某个业务数据量过大,还是会出现性能瓶颈

水平:

好处:结构简单,不用过多的去花心思设计数据库,当数据量大时,复制一份出来,改一下存取规则即可

坏处:浪费空间(相对的)

总结:可以通过垂直分表(分库)与水平分表(分库)相结合来使用,会更灵活

分库分表的优劣:

好处:当MySQL数据量达到百万量级以上时,性能就开始有显著下降,分库/分表可以非常有效的解决单库/单表数据量过多带来的性能问题

坏处:进行单表/单业务查询时,很爽。当进行多表联查时。。。

补充:

sharding-sphere-jdbc: 这个功能是通过外部的jar包引入到自己系统中通过配置文件来实现对表或者库的拆分功能实现

sharding-sphere-proxy: 这货就是一个mysql的服务器,可以直接拿客户端工具连接上,在它的配置文件里可以配置各种各样的分表分库策略,启动服务后,默认端口是3307,程序直接连接这个服务即可,对数据库的操作,直接发送给它,它再根据事先配置好的策略来保存或者读取数据,所以sharding-sphere-jdbc能做的事sharding-sphere-proxy都能做,但sharding-sphere-proxy是一个外部的服务,不像sharding-sphere-jdbc那样只一个jar包引入项目即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值