自动增加分区

有一个表tb_3a_huandan_detail,每天有300W左右的数据。查询太慢了,网上了解了一下,可以做表分区。由于数据较大,所以决定做定时任务每天执行存过自动进行分区。

1、在进行自动增加分区前一定得先对表手动分几个区

复制代码
1 ALTER TABLE tb_3a_huandan_detail PARTITION BY RANGE (TO_DAYS(ServiceStartTime))
2 (
3     PARTITION p20160523 VALUES LESS THAN (TO_DAYS('2016-05-23')),
4     PARTITION p20160524 VALUES LESS THAN (TO_DAYS('2016-05-24')),
5     PARTITION p20160525 VALUES LESS THAN (TO_DAYS('2016-05-25')),
6     PARTITION p20160526 VALUES LESS THAN (TO_DAYS('2016-05-26')),
7     PARTITION p20160527 VALUES LESS THAN (TO_DAYS('2016-05-27'))
8 )
复制代码

2、分区存过如下:

复制代码
 1 DELIMITER $$
 2 
 3 USE `nres`$$
 4 
 5 DROP PROCEDURE IF EXISTS `create_Partition_3Ahuadan`$$
 6 
 7 CREATE DEFINER=`nres`@`%` PROCEDURE `create_Partition_3Ahuadan`()
 8 BEGIN
 9 /* 事务回滚,其实放这里没什么作用,ALTER TABLE是隐式提交,回滚不了的。*/
10     DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
11     START TRANSACTION;
12  
13 /* 到系统表查出这个表的最大分区,得到最大分区的日期。在创建分区的时候,名称就以日期格式存放,方便后面维护 */
14     SELECT REPLACE(partition_name,'p','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS 
15     WHERE table_name='tb_3a_huandan_detail' ORDER BY partition_ordinal_position DESC LIMIT 1;
16      SET @Max_date= DATE(DATE_ADD(@P12_Name+0, INTERVAL 1 DAY))+0;
17 /* 修改表,在最大分区的后面增加一个分区,时间范围加1天 */
18     SET @s1=CONCAT('ALTER TABLE tb_3a_huandan_detail ADD PARTITION (PARTITION p',@Max_date,' VALUES LESS THAN (TO_DAYS (''',DATE(@Max_date),''')))');
19     /* 输出查看增加分区语句*/
20     SELECT @s1;
21     PREPARE stmt2 FROM @s1;
22     EXECUTE stmt2;
23     DEALLOCATE PREPARE stmt2;
24 /* 取出最小的分区的名称,并删除掉 。
25     注意:删除分区会同时删除分区内的数据,慎重 */
26     /*select partition_name into @P0_Name from INFORMATION_SCHEMA.PARTITIONS 
27     where table_name='tb_3a_huandan_detail' order by partition_ordinal_position limit 1;
28     SET @s=concat('ALTER TABLE tb_3a_huandan_detail DROP PARTITION ',@P0_Name);
29     PREPARE stmt1 FROM @s; 
30     EXECUTE stmt1; 
31     DEALLOCATE PREPARE stmt1; */
32 /* 提交 */
33     COMMIT ;
34  END$$
35 
36 DELIMITER ;
复制代码

3、增加定时事件

复制代码
 1 DELIMITER ||  
 2 CREATE EVENT Partition_3Ahuadan_event  
 3           ON SCHEDULE  
 4           EVERY 1 day STARTS '2016-05-27 23:59:59'   
 5           DO  
 6       BEGIN  
 7 
 8           CALL nres.`create_Partition_3Ahuadan`;  
 9         
10  END ||  
11 DELIMITER ;  
复制代码

 

参考:

http://blog.csdn.net/m582445672/article/details/7670743

http://blog.chinaunix.net/uid-24086995-id-127389.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好用的磁盘分区助手,一键整合磁盘分区。 1、安装:Acronis Disk Director Suite 10.0 的安装和Acronis Partition Expert 2003 的安装过程一样,中间让输入注册码,输入后一直下一步完成安装,然后会提示是否启动计算机,点击确定重新启动。Vista之家还是要可惜一下,这么强的软件,还是英文的,没有简体中文版,英文不好的,大家还是跟着刺客一起往下看截图和分步讲解吧。 2、重启启动计算机后,桌面上会有个“Acronis Disk Director Suite”的图标,双击运行。第一次运行Acronis Disk Director Suite 10.0 ,和Acronis Partition Expert 200一样,仍然会提示软件的运行的模式,一种是自动模式(Automatic Mode),就是以向导模式运行,一种是手动模式(Manual Mode),Vista123建议大家使用手动模式,实际操作反而更简单。 3、进入软件的主窗体后,右上角Winzard板块里面有个Increase Free Space,我们就用这个功能来调整C盘,或者其他盘的分区,下面,Vista123姑且用C盘当作例子吧,因为Windows Vista用户大多都是苦恼于C盘的空间不足! 点击Increase Free Space:想增加哪个分区的容量,就选择那个,我们就选择C吧。下一步点击next: 4、找个硬盘分区的剩余空间大的贡献一下,刺客在此就用F盘当例子吧,大家也看到了,刺客的t60本本就80g硬盘,所剩无几了各个分区。不废话了,选择f盘,然后next进行下一步。 5、下一步的窗口是调整C盘的容量(就是你刚才第3步选择的那个要增加空间的区),根据付出空间的那个分区的剩余空间,你自己滑动鼠标选择合适的吧。Vista之家就不截图了,简单的很。 6、Acronis Disk Director Suite 10.0 会弹出一个窗口,开始locking c盘和f盘,进行硬盘分区锁定,然后,就返回到软件主窗口。 7、看到菜单栏那个旗帜的图标没,就是commit的命令,意思是开始执行。点击之后,根据提示启动计算机。然后Acronis Disk Director Suite 会在进入Window Vista前把你的分区按照你的要求都调整好,非常方便!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值