msyql 分区概念

一,mysql分区编辑

mysql数据库中的数据是以文件的形式存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看)。
使用mysiam引擎的一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这一张表对应的三个文件,分割成许多个小块,这样呢,我们查找一条数据时,就不用全部查找了,只要知道这条数据在哪一块,然后在那一块找就行了。如果表的数据太大,可能一个磁盘放不下,这个时候,我们可以把 数据分配到不同的磁盘里面去。
使用innoDB引擎的/mysql/data/数据库名目录下一张表有一个frm文件存放数据结构,其他的数据部分全部都存在在/mysql/data目录下的ibdata文件中。

2二,mysql分区类型编辑

1,range分区
按照RANGE分区的表是通过如下一种方式进行分区的,每个分区包含那些分区 表达式的值位于一个给定的连续区间内的行。
2,list分区
LIST分区中每个分区的定义和选择是基于某列的值从属于一个值列表集中的一个值,而RANGE分 区是从属于一个连续区间值的集合。
3,hash分区
HASH分区主要用来确保数据在预先确定数目的分区中平均分布,你所要做的只是基于将要被哈希的列值指定一个列值或 表达式,以 及指定被分区的表将要被分割成的分区数量。
4,key分区
按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用 户定义的 表达式,而KEY分区的 哈希函数是由MySQL 服务器提供。
5,子分区
子分区是 分区表中每个分区的再次分割,子分区既可以使用HASH希分区,也可以使用KEY分区。这 也被称为复合分区(composite partitioning)。

你可能感兴趣的:(msyql 分区概念)