mysql表分区例子
2015-09-24 09:42
330 查看
1.表结构:
2.存储过程,每执行一次,会创建一周内的分区(每天一个分区)
3.存储过程,每执行一次,会删除前2天~前7天的分区
CREATE TABLE `students` ( `stu_id` int(11) NOT NULL AUTO_INCREMENT, `stu_name` int(11) DEFAULT NULL, `stu_sex` int(11) DEFAULT NULL, `cla_id` int(11) DEFAULT NULL, `stu_phone` char(11) DEFAULT NULL, `create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`stu_id`,`create_time`) )PARTITION BY RANGE (TO_DAYS(create_time)) (PARTITION p20150819 VALUES LESS THAN (736195))
2.存储过程,每执行一次,会创建一周内的分区(每天一个分区)
CREATE PROCEDURE `createPart`() BEGIN DECLARE retrows int; DECLARE pname varchar(64); SET @a = 1; WHILE @a <= 7 DO set pname=REPLACE(concat('p',date(DATE_ADD(NOW(),INTERVAL @a DAY))),'-',''); select count(1) into retrows from `information_schema`.`PARTITIONS` where partition_name=pname and table_name='students'; if retrows=0 then SET @SQL=CONCAT('ALTER TABLE students ADD PARTITION(','PARTITION ',REPLACE(concat('p',date(DATE_ADD(NOW(),INTERVAL @a DAY))),'-',''),' VALUES LESS THAN (',to_days(date_add(now(),interval @a+1 day)),'))'); PREPARE STMT FROM @SQL; EXECUTE STMT; DEALLOCATE PREPARE STMT; end if; SET @a = @a+1; END WHILE; END
3.存储过程,每执行一次,会删除前2天~前7天的分区
CREATE PROCEDURE `dropPart`() BEGIN declare pname varchar(32); declare retrows int; SET @a = -2; WHILE @a >= -7 DO set pname=REPLACE(concat('p',date(DATE_ADD(NOW(),INTERVAL @a DAY))),'-',''); select count(1) into retrows from `information_schema`.`PARTITIONS` where partition_name=pname and table_name='students'; if retrows >0 then SET @SQL=CONCAT('ALTER TABLE students drop PARTITION ',REPLACE(concat('p',date(DATE_ADD(NOW(),INTERVAL @a DAY))),'-','')); PREPARE STMT FROM @SQL; EXECUTE STMT; DEALLOCATE PREPARE STMT; end if; SET @a = @a-1; END WHILE; end
相关文章推荐
- mysql中root用户的密码修改和消除
- 安装、设置与启动MySql绿色版的方法
- mysql数据库表分区详解(数量过大的数据库表通过分区提高查询速度)
- 绿色版Mysql的安装配置
- MySQL++学习日志(一)
- 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
- mysql数据文件迁移到新的硬盘分区的方法
- mysql 查询语句优化实例
- mysql数据库user表host字段的%问题
- 提问:恢复Mysql的备份文件失败
- nodejs使用MySQL
- mysql修改表、字段、库的字符集
- 《MySQL必知必会》读书笔记
- mysql jdbc连接步骤及常见参数
- Navicat for MySQL(mysql图形化管理工具)是什么?
- mysql 当插入中文字段时发生“data too long for column”错误
- MySQL 索引选择原则
- mysql now() sysdate() 区别
- mysql存储过程入门与提高(第三篇)
- mysql存储过程入门与提高(第四篇)