mysql分区

提高性能方式:索引、分区

要分区的字段必须为主键或联合主键之一

对于有数据的表先备份后,删除原表数据再划分分区,否则太慢了。

新增分区

ALTER table test_partition ADD PARTITION (
	PARTITION p20231001 VALUES LESS THAN ('2023-10-01'),
	PARTITION p20231101 VALUES LESS THAN ('2023-11-01'),
	PARTITION p3 VALUES LESS THAN MAXVALUE
);

查看分区数据

SELECT * FROM test_partition PARTITION(p20230801);

删除分区数据

ALTER table test_partition truncate PARTITION p20231101;

删除分区

数据存储在分区上,删除分区的同时也会删除分区上的数据

ALTER table test_partition DROP PARTITION p20231101;

删除所有分区

删除表的所有分区

ALTER TABLE test_partition REMOVE PARTITIONING;

查看分区

SELECT partition_name,partition_description from information_schema.partitions
WHERE table_name = 'test_partition' and table_schema = '**database_name**';

重新定义分区

如果想在中间增加分区的话不能使用ADD PARTITION

ALTER table test_partition ADD PARTITION (
	PARTITION p20230810 VALUES LESS THAN ('2023-08-10')
);

报错:
VALUES LESS THAN value must be strictly increasing for each partition
重新定义分区:在不丢失数据的情况下,重新编辑分区

ALTER TABLE ... REORGANIZE PARTITION

拆分分区

– 将p20230901分区拆分成p20230810和p20230901分区

ALTER TABLE test_partition REORGANIZE PARTITION p20230901 INTO (
	PARTITION p20230810 VALUES LESS THAN ('2023-08-10'),
	PARTITION p20230901 VALUES LESS THAN ('2023-09-01')
);

合并分区

将多个相邻的RANGE分区合并为一个或多个RANGE分区, 合并后的分区必须和原来的区间覆盖相同

– 将p20230810和p20230901分区合并为p20230901分区

ALTER TABLE test_partition REORGANIZE PARTITION p20230810,p20230901 INTO (
	PARTITION p20230901 VALUES LESS THAN ('2023-09-01')
);

查看所有分区

SELECT table_name, partition_name, table_rows 
FROM information_schema.partitions 
WHERE table_schema = '数据库名' AND table_name = '表名';
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁晓山(ben)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值