当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql的表分区

mysql的表分区

2020年07月18日  | 移动技术网IT编程  | 我要评论

什么是表的分区:

通俗地讲表分区是将一大表,根据条件分割成若干个小表。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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网