MySQL的数据分片与分库分表(垂直拆分&水平拆分)

本文介绍了MySQL的数据分片概念,包括垂直拆分和水平拆分。垂直拆分通过将表的列进行拆分,解决表的宽度和业务分类问题;水平拆分则是为了解决单表数据量过大,通过特定规则将数据分散到多个相同结构的表中。文章详细阐述了垂直拆分和水平拆分的原则及数据平均分配的方法。

目录

什么是数据分片

垂直拆分

什么是垂直拆分 

垂直拆分的原则

水平拆分

什么是水平拆分

 如何将数据平均分为 N 份


 

什么是数据分片

 

指通过某种特定条件,将我们存放在同一数据库中的数据分散存储到多个数据库或者将我们存在同一张表的数据存储在表结构相同的多张表上,达到分散单台设备负载的效果。

数据分片有两种类型:垂直拆分与水平拆分

 

 

垂直拆分

 

什么是垂直拆分 

所谓表的垂直拆分,就是把原来一个有很多的表拆分成多个表,这解决了表的宽度问题。

所谓库的垂直拆分,就是按照业务将表进行分类,分布到不同的数据库上,每个库可以放在不同的服务器上

 

垂直拆分的原则

1、 把不常用的字段表单独存放到一个表中。
2、 把大字段独立存放到一个表中。
3、 把经常一起使用的字段放到一起。

 

 

水平拆分

 

什么是水平拆分

表的水平拆分是为了解决单表数据量过大的问题,水平拆分的每一个表的结构都是完全一致的,所有子表数据汇聚为一张总表

库的水平拆分是把一个表的数据按一定规则拆分到不同的数据库上,多个数据库上的这张表汇聚在一起成为一张总表

 

 如何将数据平均分为 N 份

1、 对 customer_id 进行 hash 运算,如果要拆分为 5 个表则使用 mod(customer_id,5)取出 0-4 个值。
2、 针对不动的 hashid 把数据存储到不同的表中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值