按照文档说的,key分区是用MySQL内部的Hash Function来进行处理的,我现在的需求是:
create table test(
   id int not null primary key,
  col2 varchar(20)
)
partition by key(id) partitions 4;insert into test(id,col2) values(7,'test1');
insert into test(id,col2) values(2,'test2'),(5,'test5'),(8,'test8');我想实现每一个不同的id记录放在一个分区里,例如id为2,5,7,8的记录分别放在p0,p1,p2,p3分区里,貌似用key分区不能实现啊。

解决方案 »

  1.   

    KEY分区是由MYSQL自己内部根据算法自主决定存放记录到哪个分区。如果要人为指定则应该使用RANGE 或者 LIST分区。但2,5,7,8的记录分别放在p0,p1,p2,p3 看不出什么算法逻辑,比如 100 应该放到哪个分区? 如果人都无法事先预测的东西,计算机就更不知道应该怎么做了。
      

  2.   

    分区的编号是通过2的幂(powers-of-two)算法得到,而不是通过模数算法。http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html#partitioning-linear-hash