青岛网站建设公司代理长春网站建设技术支持
1、首先介绍一个Mysql5.5中新增的分区功能:
COLUMN分区功能,只有RANGE COLUMN和LIST COLUMN这两种分区;支持整形、日期、字符串;
介绍的链接:https://www.cnblogs.com/chenmh/p/5630834.html
2、下面介绍一下对已有数据表的分区(针对字符串字段分区,时间字段分区网上代码很多了):
(1)先创建一张和需要分区的表(tamab02)一样的表(tamab02_copy),并建立分区:
CREATE TABLE `tamab02_copy` (`record_id` VARCHAR(32) NOT NULL COMMENT '设备异常信息id',`facility_no` VARCHAR(32) DEFAULT NULL COMMENT '设备编号',`data_time` VARCHAR(32) COMMENT '数据时间',`abnormal_type` VARCHAR(32) DEFAULT NULL COMMENT '异常类型',`abnormal_code` VARCHAR(32) DEFAULT NULL COMMENT '异常编码',PRIMARY KEY (`record_id`,`data_time`))ENGINE=INNODB DEFAULT CHARSET=utf8PARTITION BY RANGE COLUMNS(data_time) --- 分区的字段一定要是PRIMARY KEY,所以PRIMARY KEY中包含data_time字段;(PARTITION p20180425 VALUES LESS THAN ('20180426000000'), --- 将小于26号的数据分区到名称为p20180425这个分区中;PARTITION p20180426 VALUES LESS THAN ('20180427000000') --- 将小于27号的数据分区到名称为p20180426这个分区中;)
(2)第二步是将tamab02这张表中的数据全部导入到新建表tamab02_copy中:
INSERT INTO tamab02_copy SELECT * FROM tamab02;
(3)此时可以先查一下,分区是否创建成功并且数据是不是已经成功导入到了新表tamab02_copy这张表中(查看分区的代码):
SELECTpartition_name part, partition_expression expr, partition_description descr, table_rows
FROMINFORMATION_SCHEMA.partitions
WHERETABLE_SCHEMA = SCHEMA() AND TABLE_NAME='tamab02_copy'
如果能看到下面样子的结果,恭喜你已经建立分区成功,并且导入数据成功:
(4)第四步,请务必上面三步操作成功,并能看到如上图所示的结果,再进行操作;
----删除原来的表tamab02(之所以要确保前三步成功,是因为如果不慎执行了第四步将原有的表删除了,会丢掉宝贵的数据...)
DROP TABLE tamab02;
(5)最后一步,只需要将新建的表改名为原表名即可,以后有数据都往新建表中的插入了:
ALTER TABLE tamab02_copy RENAME tamab02;
=========================
最后别忘了写存储过程和定时任务来每天建立下一天的分区!