目录
什么是数据分片
指通过某种特定条件,将我们存放在同一数据库中的数据分散存储到多个数据库或者将我们存在同一张表的数据存储在表结构相同的多张表上,达到分散单台设备负载的效果。
数据分片有两种类型:垂直拆分与水平拆分
垂直拆分
什么是垂直拆分
所谓表的垂直拆分,就是把原来一个有很多列的表拆分成多个表,这解决了表的宽度问题。
所谓库的垂直拆分,就是按照业务将表进行分类,分布到不同的数据库上,每个库可以放在不同的服务器上
垂直拆分的原则
1、 把不常用的字段表单独存放到一个表中。
2、 把大字段独立存放到一个表中。
3、 把经常一起使用的字段放到一起。
水平拆分
什么是水平拆分
表的水平拆分是为了解决单表数据量过大的问题,水平拆分的每一个表的结构都是完全一致的,所有子表数据汇聚为一张总表
库的水平拆分是把一个表的数据按一定规则拆分到不同的数据库上,多个数据库上的这张表汇聚在一起成为一张总表
如何将数据平均分为 N 份
1、 对 customer_id 进行 hash 运算,如果要拆分为 5 个表则使用 mod(customer_id,5)取出 0-4 个值。
2、 针对不动的 hashid 把数据存储到不同的表中。
本文介绍了MySQL的数据分片概念,包括垂直拆分和水平拆分。垂直拆分通过将表的列进行拆分,解决表的宽度和业务分类问题;水平拆分则是为了解决单表数据量过大,通过特定规则将数据分散到多个相同结构的表中。文章详细阐述了垂直拆分和水平拆分的原则及数据平均分配的方法。

549

被折叠的 条评论
为什么被折叠?



