--##test01大小为52G,保存大概两天的数据
--##每天数据大约25G左右,每天需创建一张备份表,插入新一天的数据,再要在这张表中删除前一天的数据
--##现在采取分区裁剪的办法,避免多余的备份与删除
--##现在分区分为两种:
--##1.简单range分区(一层分区,每个区大约25G)
--##2.range和key复合分区(两层分区,理想状态下均匀分布每个分区大概3G,但从实际历史表分区情况看,数据分布不均匀)
--##
--#########################################
--#############range分区###################
--#创建存储过程,调用实现分区裁剪;
--##每天数据大约25G左右,每天需创建一张备份表,插入新一天的数据,再要在这张表中删除前一天的数据
--##现在采取分区裁剪的办法,避免多余的备份与删除
--##现在分区分为两种:
--##1.简单range分区(一层分区,每个区大约25G)
--##2.range和key复合分区(两层分区,理想状态下均匀分布每个分区大概3G,但从实际历史表分区情况看,数据分布不均匀)
--##
--#########################################
--#############range分区###################
--1.停止应用服务器,杀死所有连接进程
--2.重命名大表
ALTER TABLE test01 RENAME TO risk_result_terminal_real20180620;
--3.创建分区表
CREATE TABLE `test01` (
`ResultID` VARCHAR(40) NOT NULL COMMENT '机场4字码',
`NodeId` VARCHAR(40) NOT NULL COMMENT '终端风险因素ID',
`RiskValue` DOUBLE(5,2) DEFAULT '1.00' COMMENT '终端风险因素值',
`ComputeTime` DATETIME DEFAULT NULL COMMENT '计算时间',
`Description` VARCHAR(500) DEFAULT NULL COMMENT '得分备注',
`Sort` INT(11) DEFAULT NULL,
`Dimension` VARCHAR(50) DEFAULT NULL COMMENT '评分维度',
`ItemId` VARCHAR(40) DEFAULT NULL COMMENT '航班ID',
KEY `r_resultid` (`ResultID`),
KEY `r_itemId` (`ItemId`),
KEY `r_risktime` (`ComputeTime`),
KEY `r_NodeId` (`NodeId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
/*!50500 PARTITION BY RANGE COLUMNS(ComputeTime)
(PARTITION p20180621 VALUES LESS THAN ('2018-06-22') ENGINE = InnoDB,
PARTITION p20180622 VALUES LESS THAN ('2018-06-23') ENGINE = InnoDB,
PARTITION p20180623 VALUES LESS THAN ('2018-06-24') ENGINE = InnoDB,
PARTITION p20180624 VALUES LESS THAN ('2018-06-25') ENGINE = InnoDB,
PARTITION p20180625 VALUES LESS THAN ('2018-06-26') ENGINE = InnoDB,
PARTITION p20180626 VALUES LESS THAN ('2018-06-27') ENGINE = InnoDB,
PARTITION p20180627 VALUES LESS THAN ('2018-06-28') ENGINE = InnoDB) */
--#修改代码
--分区增加
ALTER TABLE test01 ADD PARTITION (PARTITION p20160524 VALUES LESS THAN ('2018-06-25'));
--分区裁剪
ALTER TABLE test01 DROP PARTITION p20180621;
--#创建存储过程,调用实现分区裁剪;
DELIMITER $$
USE `mrvc`$$
DROP PROCEDURE IF EXISTS `create_Partition`$$
CREATE DEFINER=`root`@`%` PROCEDURE `create_Partition`()
BEGIN
/* 事务回滚,其实放这里没什么作用,ALTER TABLE是隐式提交,回滚不了的。*/
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
START TRANSACTION;
/