Sharding-切分

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dfhgshgdf/article/details/82913312

概念

当数据量非常大时,数据库拆分是常见的降低数据库大小,提升性能的方法。数据库拆分是指按照某种条件,或者维度,将一个库(表)中的数据分散到多个库(表)中,通常可以分为水平拆分和垂直拆分。

类别

水平拆分

水平拆分以某个字段为依据(例如uid),按照一定规则(例如取模),将一个库(表)上的数据拆分到多个库(表)上,以降低单库(表)大小。简单来讲,它是将同一个库(表)中的记录拆分到多个结构相同的库(表)中。

image.png | center | 562x215

  • 每个库(表)结构一致
  • 每个库(表)数据不一致,没有交集
  • 所有库(表)的并集是全量数据

水平拆分可以把单表数据分布到其他数据表中,甚至集群中的其他数据库中,从而缓解单个数据库(表)的压力,解决单表大数据量问题。

垂直拆分

垂直拆分是指将一个属性较多,一行数据较大的表,将不同的属性拆分到不同的表中,以降低单库(表)大小。简单来说,是把一张表按列切分为多张表。

image.png | center | 466x345

  • 每个库(表)结构不一致
  • 一般来说,每个库(表)的属性至少有一列交集
  • 所有库(表)的并集是全量数据

参考资料

  1. MySQL笔记
  2. How Sharding Works
  3. 一分钟掌握数据库垂直拆分
  4. 数据库垂直拆分 水平拆分

猜你喜欢

转载自blog.csdn.net/dfhgshgdf/article/details/82913312