数据库分区、分表、分片的区别

一.分区的概念

分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值

1.1分区的两种方式

1、水平分区
这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。
举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)
2、垂直分区
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。
举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。

二.分区分表和分库的区别

分区
就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的
分表
就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它。

分库
一旦分表,一个库中的表会越来越多

三.关于数据分片

数据分片技术(sharding)应用于分布式场景下。将不同类别的数据分配到各个子服务器下,应该满足的特点:

1.分布均匀:即每台设备上的数据量尽可能接近
2.负载均衡:即每台设备的请求量尽可能接近
3.扩缩容量是数据的迁移尽可能的小

数据分片一般都是使用Key或Key的哈希值来计算Key的分布,常见的几种数据分片的方法如下:
1.划分号段,比如将key为1-100的数据存储在设备一,100-200的数据存储到设备二,依次划分,缺点是各个号段的热度不一样,会导致负载不均衡
2.取模,取key的hash值,然后根据设备数量取模,得到设备号,将数据存储进相应的设备中,缺点是在扩容时数据的迁移会非常大
3.检索表,在检索表中记录数据与设备间的映射关系,需要时查找检索表就能够找到数据的存储地址,缺点是在数据量大的情况下,检索表也会非常大
4.一致性哈希算法(Consistent Hashing)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值