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));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值