mysql 分区

1.当数据量特别大的时候,仅仅是做索引,是不够的。这时就需要“分区” ,什么是分区 ?

   a.将数据分段划分在多个位置存放,可以是同一块磁盘,也可以在不同的机器。

   b.分区后,表还是一张表,但数据散列到多个位置了。

   c.读写时,表名不变,数据库自动去组织分区的数据。

 

2.分区类型

      mysql 中的分区有range,list,hash ,key 四种分区方法,其中最常用的是range,list这两种。

      本篇文章使用range分区,比如,按照ID分区。

3.对已有的表进行分区(range模式)

alter table 表名 partition by range(字段名)(

     partition 分区名 values less than (字段值)

4.使用例子测试

alter table news_main   PARTITION by range(id)  #使用range类型分区,并通过ID做为分区范围
(
  PARTITION news_main_a values less than (2), #id小于或等于2,在news_main_a分区
  PARTITION news_main_b values less than (6),
  PARTITION news_main_c values less than (MAXVALUE) #id小于或等于id的最大值,在news_main_c分区
);

#MAXVALUE 取决于id的类型

 我们通过  show variables like 'datadir‘  
  看下表的主目录有什么变化

首先执行 show variables like 'datadir'; 查询出mysql存放数据文件的目录,然后进入目录,如下:

然后进行分区,执行分区代码

查看数据库文件目录变化,多了几个文件,是通过ID分割出来的文件。

5.分区查询,这时,我们就可以看到,rows=3,就不用把全部的rows查出来

6.合并分区

alter table 表名

reorganize partition 分区名1,分区名2 into

(partition 分区名 values less than (xx));

alter table news_main

reorganize partition news_main_a,news_main_b into

(partition news_main_a values less than (6));

#把news_main_a,news_main_b合并成news_main_a

7.删除分区

alter table  表名 drop partition 分区名;(丢数据)

Alter table 表名 remove partitioning; (不丢数据)

 

8.explain在分区的使用

EXPLAIN PARTITIONS select xxxxxx

 

 9.强制使用某分区查询

select * from 表名 PARTITION(分区名)  

10.指定路径分区

PARTITION p0 values less than (2) DATA DIR
ECTORY = 'D:/abc/1'
INDEX DIRECTORY = 'D:/abc/1', 

11.list分区

partition by list(字段名)
(
partition p1 values in  (字段值1,字段值2),
partition p2 values in  (字段值3,字段值4),
partition p3 values  in  (字段值5,字段值6)
);
常用在把不同分类的商品 分区分出去

11.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值