mysql range分区

一、对已有表分区和创建: https://blog.csdn.net/orangleliu/article/details/57088338

1、在已经存在表中,修改分区表

alter table t_fenqu PARTITION by RANGE (TO_DAYS(create_date))
(
	PARTITION p0 VALUES LESS THAN (TO_DAYS('2018-06-01')),
	PARTITION pmax VALUES LESS THAN MAXVALUE
);

a、异常:A PRIMARY KEY must include all columns in the table's partitioning function (需要将分区字段设置成主键)

2、增、删分区

-- 删除分区
alter table t_fenqu DROP PARTITION pmax;

-- 添加分区
alter table t_fenqu add PARTITION (
	PARTITION p1 VALUES LESS THAN (TO_DAYS('2018-07-01')),
	PARTITION p2 VALUES LESS THAN (TO_DAYS('2018-08-01')),
	PARTITION p3 VALUES LESS THAN (TO_DAYS('2018-09-01')),
	PARTITION pmax VALUES LESS THAN MAXVALUE
);

3、查询分区

SELECT
  partition_name, 
  partition_expression, 
  partition_description, 
  FROM_DAYS(partition_description), 
  table_rows 
FROM
  INFORMATION_SCHEMA.partitions 
WHERE
  TABLE_SCHEMA = SCHEMA() 
  AND TABLE_NAME='t_fenqu'; --这里是表名
二、mysql表分区  https://blog.csdn.net/qq173684423/article/details/53994264


三、存储过程 自动创建时间分区

DROP PROCEDURE IF EXISTS pro_auto_create_partitionByDate;
CREATE PROCEDURE pro_auto_create_partitionByDate(
	in dataBaseName varchar(50), in tableName varchar(50)
)x_end:BEGIN
	-- 变量声明 Start
	DECLARE x_date VARCHAR(50);
-- 	DECLARE x_exist_par_max_sql VARCHAR(255);
	-- 变量声明 End


	-- 查询当前时间 加上一个月
	select DATE_FORMAT(date_add(NOW(), INTERVAL 1 MONTH),'%Y-%m') into x_date from dual;
	
	-- 拼接添加 分区SQL
	SET @x_sql = CONCAT('alter table ',tableName,' add PARTITION(', 
								'PARTITION ','`p',x_date,'-01`',' VALUES LESS THAN ('
								'TO_DAYS(\'',x_date,'-01','\')','))'
								);
						SELECT @x_sql;  
           PREPARE stmt2 FROM @x_sql;  
           EXECUTE stmt2;  
           DEALLOCATE PREPARE stmt2;
	COMMIT;
end x_end;

四、创建事件

-- 查看定时任务是否开启
show variables like '%event_scheduler'; 
-- 没有开启 开启一下
SET GLOBAL event_scheduler = ON;

-- 创建事件 
DELIMITER $$  
drop event if exists auto_create_partition_time  $$  
create event auto_create_partition_time 
	on schedule 
	every 1 minute  
	starts sysdate()  
do  
BEGIN  
    call pro_auto_create_partitionByDate('mytest','t_fenqu');
END$$  
delimiter ;






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值