欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql的表分区

程序员文章站 2022-03-12 22:04:54
1.RANGEalter table `cdb_test` partition by range (id) (partition `p0` values less than (2), partition `p1` values less than (4), partition `p2` values less than (maxvalue))2.List...

什么是表的分区:

通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。

ANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。 
LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。 
HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。
KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

1.增加分区

1.1RANGE

范围分区    range (id) 中的id为分区键,less than是小于的意思。

alter table `cdb_test` partition by range (id) 
(
	partition `p0` values less than (2),
        partition `p1` values less than (4),
        partition `p2` values less than (maxvalue)
)

时间分区 range(TO_DAYS(ts))中的ts为分区键,less than是小于的意思。

alter table jyz_jyzqgdwa partition by range(TO_DAYS(rq))
(
    partition p0 values less than(TO_DAYS('2019-12-01')),
    partition p1 values less than(TO_DAYS('2020-02-01')),
    partition p2 values less than(TO_DAYS('2020-04-01')),
    partition p3 values less than(TO_DAYS('2020-06-01')),
    partition p4 values less than(TO_DAYS('2020-08-01')),
    partition p5 values less than(TO_DAYS('2020-10-01')),
    partition p6 values less than(TO_DAYS('2020-12-01')),
    partition p7 values less than(TO_DAYS('2021-02-01')),
    partition p8 values less than(TO_DAYS('2021-04-01')),
    partition p9 values less than(TO_DAYS('2021-06-01')),
    partition p10 values less than(TO_DAYS('2021-08-01')),
    partition p11 values less than(TO_DAYS('2021-10-01')),
    partition p12 values less than(TO_DAYS('2021-12-01')),
    partition p13 values less than(TO_DAYS('2022-02-01')),
    partition p14 values less than maxvalue
	)

1.2List

list(id)中的id为分区键,p0为id为3和5的精确分区。

alter table `cdb_test` partition by list(id) 
(
	     partition `p0` values in (3,5),
            partition `p1` values in (6,7,8,10,15),
      
)

1.3hash

hash(id)中的id为分区键,partitions为分区的数量;HASH 分区只支持数字分区,如果分区键为varchar可使用key分区

alter table `cdb_test` partition by hash(id)
(

    partitions 10; 
	)

1.4key 

同hash分区,但还是有所区别。区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

alter table `cdb_test` partition by LINEAR KEY (id)
(

    partitions 10; 
	)

2.查看分区

select 
  partition_name part,  
  partition_expression expr,  
  partition_description descr,  
  table_rows  
from information_schema.partitions  where 
  table_schema = schema()  
  and table_name='record1';  --record1查询的表名

3.删除分区

ALTER TABLE  `cdb_test` DROP PARTITION s20100406 ;

 

本文地址:https://blog.csdn.net/weixin_38959210/article/details/107384271