mysql的表分区
什么是表的分区:
通俗地讲表分区是将一大表,根据条件分割成若干个小表。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
上一篇: 5G的发展历史和未来应用
下一篇: CentOS7下安装mysql8.0