HASH分区主要用来确保数据在预先确定数目的分区中平均分布。它可以基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。

  例4:假定你创建了一个如下的一个表,该表保存有20家音像店的职员记录,这20家音像店的编号从1到20。你想把不同时期加入的员工进行分别存储,那么你可以将日期字段hired(即离职时间)作为一个key,创建的SQL语句如下:

那么要插入一个在2005-09-15日入职的员工E1,那么按照取模函数会将其放置到第2分区中:

  MOD(YEAR(‘2005-09-01’), 4)= MOD(2005,4)= 1 //即第2分区

 

 

KEY分区

  与HASH分区类似,但它的key可以不是整数类型,如字符串等类型的字段。MySQL 簇(Cluster)使用函数MD5()来实现KEY分区;对于使用其他存储引擎的表,服务器使用其自己内部的哈希函数,这些函数是基于与PASSWORD()一样的运算法则。

 

 

不同分区技术的对比

  如上分别列出了不同的分区技术,接下来进行对比,如下表所示: