Mysql 按天自动分区,合并老分区
适用于每天一个分区。。。不断加分区,导致分区不够用的情况
CREATE DEFINER=hehe@XXXXXX PROCEDURE p_auto_partition_day(IN databaseName VARCHAR(50),IN tableName VARCHAR(50),IN daynum VARCHAR(50))
BEGIN
DECLARE v_partion_date DATE;
DECLARE v_partion_date_old DATE;
DECLARE v_now DATE DEFAULT CURDATE();
DECLARE v_partion_name_old VARCHAR(32);
DECLARE v_partion_name VARCHAR(32);
DECLARE v_partion_cond VARCHAR(128);
DECLARE v_sql VARCHAR(1024);
DECLARE v_partion_number VARCHAR(32);
SELECT SUBSTR(MAX(partition_name), 2) INTO v_partion_date FROM information_schema.partitions WHERE TABLE_SCHEMA = databaseName AND TABLE_NAME = tableName;
WHILE NOT v_partion_date > v_now DO
SET v_partion_name = DATE_FORMAT(DATE_ADD(v_partion_date,INTERVAL 1 DAY), '%Y%m%d');
SET v_partion_cond = CONCAT(DATE_FORMAT(DATE_ADD(v_partion_date,INTERVAL 2 DAY), '%Y-%m%-%d'), ' 00:00:00');
SET v_sql = CONCAT('alter table ',tableName,' add partition(partition p', v_partion_name, ' values less than (UNIX_TIMESTAMP(''', v_partion_cond, ''')))');
SET @v_sql = v_sql;
-- select @v_sql;
PREPARE stmt from @v_sql;
EXECUTE stmt;
SET v_partion_date = DATE_ADD(v_partion_date,INTERVAL 1 DAY);
END WHILE;
SELECT SUBSTR(MIN(partition_name), 2) INTO v_partion_date_old FROM information_schema.partitions WHERE TABLE_SCHEMA = databaseName AND TABLE_NAME = tableName;
SELECT COUNT(1) INTO v_partion_number FROM information_schema.partitions WHERE TABLE_SCHEMA = databaseName AND TABLE_NAME = tableName;
WHILE v_partion_number > daynum DO
SET v_partion_name = DATE_FORMAT(DATE_ADD(v_partion_date_old,INTERVAL 1 DAY), '%Y%m%d');
SET v_partion_name_old = DATE_FORMAT(v_partion_date_old, '%Y%m%d');
SET v_partion_cond = CONCAT(DATE_FORMAT(DATE_ADD(v_partion_date_old,INTERVAL 2 DAY), '%Y-%m%-%d'), ' 00:00:00');
SET v_sql = CONCAT('ALTER TABLE ',tableName,' REORGANIZE PARTITION p',v_partion_name_old,',p',v_partion_name,' into(partition p', v_partion_name, ' values less than (UNIX_TIMESTAMP(''', v_partion_cond, ''')))');
SET @v_sql = v_sql;
-- select @v_sql;
PREPARE stmt from @v_sql;
EXECUTE stmt;
SET v_partion_number = v_partion_number-1;
END WHILE;
END
Mysql 按天自动分区,合并老分区的更多相关文章
- Partition--分区拆分和分区合并
--=========================================== --准备测试数据 USE [DB0001] GO CREATE PARTITION FUNCTION [pf ...
- mysql表分区、查看分区
原文地址:http://blog.csdn.net/feihong247/article/details/7885199 一. mysql分区简介 数据库分区 数据库分区是一种物理数据库设 ...
- mysql 表分区 查看表分区 修改表分区
原文地址:http://blog.csdn.net/feihong247/article/details/7885199 一. mysql分区简介 数据库分区 数据库分区是一种物理数据库设 ...
- mysql数据库为什么要分表和分区?
一般下载的源码都带了MySQL数据库的,做个真正意义上的网站没数据库肯定不行. 数据库主要存放用户信息(注册用户名密码,分组,等级等),配置信息(管理权限配置,模板配置等),内容链接(html ,图片 ...
- mysql的分区技术(建立分区)
-- mysql建立表分区,使用range方法建立: create table t_range( id int(11), money int(11) unsigned not null, date d ...
- 如何用SQL脚本在SQL Server Replication中创建合并复制,以及怎么创建分区合并复制
假设我们要创建合并复制的发布端数据库是EFDemo其中有四张表,订阅端数据库是EFDemoSubscription,如下图所示: 首先创建发布端快照代理Sql agent job:"EFDe ...
- Hive静态分区和动态分区,对应Mysql中的元数据信息
静态分区: 手动指定分区加载数据,就是常说的静态分区的使用.但是在日常工作中用的比较多的是动态分区. 创建: hive> create table order_mulit_partition( ...
- Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)
1.磁盘分区: 1 以root身份登录 查看磁盘信息(自行选择需要使用的磁盘,此处只需要了解信息) fdisk –l 创建新硬盘 fdisk /dev/vdb (决定使用哪个磁盘) 输入n回车,再输入 ...
- Mysql --分区(4)List分区
LIST分区 LIST分区是建立离散的值列表告诉数据库特定的值属于哪个分区,LIST分区在很多方面类似于RANGE分区,区别在LIST分区是从属于一个枚举列表的值得集合,RANGE分区是从属于一个连续 ...
随机推荐
- (转)从拜占庭将军问题谈谈为什么pow是目前最好的共识机制
我们知道基于区块链技术现在有很多的共识机制,包括不限于POW,POS,DPOS,PBFT……,我先不说为什么我最认可POW,我们先来看看著名的拜占庭将军问题: 拜占庭帝国即中世纪的土耳其,拥有巨大的财 ...
- DLNg[结构化ML项目]第二周迁移学习+多任务学习
1.迁移学习 比如要训练一个放射科图片识别系统,但是图片非常少,那么可以先在有大量其他图片的训练集上进行训练,比如猫狗植物等的图片,这样训练好模型之后就可以转移到放射科图片上,模型已经从其他图片中学习 ...
- cocos2dx 3.13 在Mac平台下配置安卓环境变量
终端下输入:vi .bash_profile 编辑环境变量: export COCOS_CONSOLE_ROOT=/Users/jiazedong/Cocos2d-x/cocos2d-x-3.2/co ...
- C++二进制字符串转Base64字符串 Base64字符串转二进制字符串
封装成类的 . base64格式的字符串,只包含大小写字母.零到九,以及 + / //___base_64.h /*base_64.h文件*/ #ifndef BASE_64_H #define BA ...
- 总结我在huawei matebook D 2018版中安装archlinux的过程
1.首先当然是准备一个启动U盘.按理说UEFI启动方式,只要将ISO镜像中的文件copy到U盘根目录即可,可以实际用的时候虽然能启动,但是进入live的时候会有些问题,所以老老实实用UltraISO ...
- Oracle TNS-01190: The user is not authorized to execute the requested listener command
今天,在玩 lsnrctl命令,是为了了解Oracle的一些配置. 当执行 show inbound_connect_timeout 命令之后,提示了错误信息: TNS-01190: The user ...
- 关于 LD_LIBRARY_PATH 这个环境变量
这个变量中可以保存linux寻找库时搜索的路径,按照一篇文章中的介绍,不应该设置这个变量.文章的重点如下: 1. 不要设置这个变量. 2. Solaris中,在编译时,使用 -L 选项指定编译时库的搜 ...
- [ Learning ] Design Pattens
1. 单例2. 模板3. 代理,装饰 (代理和装饰的区别)4. 状态
- Sitecore营销自动化
增加与战略性自动化营销系统的互动 Sitecore营销自动化基于DMS中的Sitecore个性化功能.营销自动化系统使用诸如位置,设备和先前访问或购买之类的客户数据来影响用户沿着购买路径的旅程.这些系 ...
- Java综合高级篇
1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法. ja ...