MySQL 表分区的几种方法和注意

分区方法1:Hash分区

  例子:

    create table thash(x int ,y int) partition by hash(x) partitions 4; 就这么一句话表就分好区了。下一步我们把问题引深一点;

    create table thash2(id int primary key,x int,y int) partition by hash(x) partitions 4; 

      thash2 是没有办法创建的不是它的语法有哪里不对!是它不和规定。在有主键或unique的情况下分区列只能是它们的一部分

      thash2 的主键是id 然而 x 不是主键的一部分,所以就不合规定啦。所以就不可以创建啦。别的深入的我就不多说了。下面我们看一下一个

      分区方法。

分区方法2:range分区

  例子:

    create table trang(x int,y int ) partition by range(x) (partition p0 values less than (100),partition p1 values less than(200));

    这里有一个地方我要说一下就是分区的两个临界值一定是要有括号的。不然算语法错误。

    这样分区的好处是在查询时可以只锁定分区。不需要锁定表。你要不信我们来看一下它的执行计划。

      explain partitions select * from trang where x <1 ;

    

    只锁定一个分区p0看到了吧。但是好事并不是一定会发生的。

      1:比如你的语句写成了select * from trange ; 这样人家一定锁的不只是一个分区啊。

分区方法3:list分区

  例子:

    create table tlist(x int ,y int) partition by list(x) (partition p0 values in (1,3,5,7),partition p1 values in (2,4,6,8));

原文地址:https://www.cnblogs.com/JiangLe/p/4277982.html