数据库基础知识(二)数据库分表技术

数据库分表技术:

1、 分表技术
a). 水平分割(分表)
将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,MYI索引文件,frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后取操作它
简单理解: 将一张大表,分割成多个数据类型与大表相同的子表,在访问时,根据事先定义好的规则得到对应的表名,然后去操作,即水平将数据分割。

b). 垂直分割(分区)
分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但是数据散列到多个位置了。app读写的时候操作的还是大表的名字,db自动去组织分区的数据
简单理解: 是将一张大表的某(几)列,提取成一张单独的表。一般情况两者的关系是一对一。即垂直将数据结构分割。

2、 分表的几种方式
a. mysql集群: 它不是分表,但起到了和分表相同的作用。集群可以分担数据库的操作次数,将任务分担到多台数据库上。集群可以读写分离,减少读写压力,从而提升数据库性能

b. 自定义规则分表
大表可以按照业务的规则来分解为多个子表。通常为以下几种类型,也可自定义规则
1). Range: 这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区

2). Hash: 这种模式允许通过对表的一个或多个列的hashkey进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。

3). Key: 上面Hash模式的一种延伸。这里的hash key是mysql系统产生的

4). List(预定义列表): 模式允许系统通过预定义的列表的值来对数据进行分割

5). Composite(复合模式): 以上模式的组合使用

c. 利用merge存储引擎来实现分表
通过mycat技术,可以帮助实现各种分库技术

你可能感兴趣的:(数据库集合)