mysql 创建分区表_Mysql分区表及自动创建分区Partition

Range分区表建表语句如下,其中分区键必须和id构成主键和唯一键

CREATE TABLE `test1` (

`id` char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ‘自增主键(guid)‘,

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间‘,

`partition_key` int(8) NOT NULL COMMENT ‘分区键(格式:yyyyMMdd)‘,

PRIMARY KEY (`id`,`partition_key`),

UNIQUE KEY `id_UNIQUE` (`id`,`partition_key`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

PARTITION BY RANGE (partition_key)

(PARTITION p0 VALUES LESS THAN (20180619) ENGINE = InnoDB,

PARTITION p20180619 VALUES LESS THAN (20180620) ENGINE = InnoDB,

PARTITION p20180621 VALUES LESS THAN (20180622) ENGINE = InnoDB,

PARTITION p20180622 VALUES LESS THAN (20180623) ENGINE = InnoDB,

PARTITION p20180623 VALUES LESS THAN (20180624) ENGINE = InnoDB);

新增分区

alter TABLE `test1` add PARTITION(

PARTITION p20180629 VALUES LESS THAN (20180630) ENGINE = InnoDB

);

删除分区

alter table `test1` drop PARTITION p20180629;

Mysql不能自动创建分区,需要使用mysql event事件的方式自动创建分区

1.创建分区的存储过程如下(每次执行先校验当前分区是否存在,如果存在则不处理;不存在则创建):

DELIMITER $$

#该表所在数据库名称

USE `demo`$$

DROP PROCEDURE IF EXISTS `create_partition_by_day`$$

CREATE PROCEDURE `create_partition_by_day`(IN_SCHEMANAME VARCHAR(64), IN_TABLENAME VARCHAR(64))

BEGIN

#当前日期存在的分区的个数

DECLARE ROWS_CNT INT UNSIGNED;

#目前日期,为当前日期的后一天

DECLARE TARGET_DATE TIMESTAMP;

#分区的名称,格式为p20180620

DECLARE PARTITIONNAME VARCHAR(9);

#当前分区名称的分区值上限,即为 PARTITIONNAME + 1

DECLARE PARTITION_ADD_DAY VARCHAR(9);

SET TARGET_DATE = NOW() + INTERVAL 1 DAY;

SET PARTITIONNAME = DATE_FORMAT( TARGET_DATE, ‘p%Y%m%d‘ );

SET TARGET_DATE = TARGET_DATE + INTERVAL 1 DAY;

SET PARTITION_ADD_DAY = DATE_FORMAT( TARGET_DATE, ‘%Y%m%d‘ );

SELECT COUNT(*) INTO ROWS_CNT FROM information_schema.partitions

WHERE table_schema = IN_SCHEMANAME AND table_name = IN_TABLENAME AND partition_name = PARTITIONNAME;

IF ROWS_CNT = 0 THEN

SET @SQL = CONCAT( ‘ALTER TABLE `‘, IN_SCHEMANAME, ‘`.`‘, IN_TABLENAME, ‘`‘,

‘ ADD PARTITION (PARTITION ‘, PARTITIONNAME, " VALUES LESS THAN (",

PARTITION_ADD_DAY ,") ENGINE = InnoDB);" );

PREPARE STMT FROM @SQL;

EXECUTE STMT;

DEALLOCATE PREPARE STMT;

ELSE

SELECT CONCAT("partition `", PARTITIONNAME, "` for table `",IN_SCHEMANAME, ".", IN_TABLENAME, "` already exists") AS result;

END IF;

END$$

DELIMITER ;

2.数据库定时任务(每小时执行一次)

DELIMITER $$

#该表所在的数据库名称

USE `demo`$$

CREATE EVENT IF NOT EXISTS `daily_generate_partition`

ON SCHEDULE EVERY 1 hour #执行周期,还有天、月等等

STARTS ‘2018-06-20 00:00:00‘

ON COMPLETION PRESERVE

ENABLE

COMMENT ‘Creating partitions‘

DO BEGIN

#调用刚才创建的存储过程,第一个参数是数据库名称,第二个参数是表名称

CALL datacollectcenter.create_partition_by_day(‘demo‘,‘test1‘);

END$$

DELIMITER ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python下载文件暂停恢复_Python关于Threading暂停恢复解决办法

我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦start后, 线程就属于失控状态. 不过, 我们可以自己实现这些. 一般的方法就是循环地判断一个标志…

信息系统状态过程图_过程状态图中使用的重要术语| 操作系统

信息系统状态过程图1)上下文切换 (1) Context Switching) Whenever a process is transferred within the system, it moves within different states. These states are known as the process states. When a process goes from one state to another state inside the system…

mysql 吧库下的表名都加_mysql数据库表名大小写问题

mysql数据库表名大小写问题mysql数据库linux版本表名、字段名默认大小写敏感,即区分大小写。查看mysql有关大小写参数:lower_case_file_system是一个只读参数,无法被修改,这个参数是用来告诉你在当前的系统平台(linux\windows等)下…

rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机

海盗船最近新出的旗舰耳机,VIRTUOSO RGB Wireless SE,中文名叫鉴赏家。耳机一改往日欧美电竞风,改走金属质感高大上简约风,不过讲真,这颜值我吃起来很香。考虑文章过长,我先概括一下入手理由,具…

python 基类 派生类_在Python中具有两个子(派生)类的继承示例

python 基类 派生类In this program, we have a parent class named Details and two child classes named Employee and Doctor, we are inheritance the class Details on the classes Employee and Doctor. And, finally creating two objects of Employee and Doctor class…

连接postgresql

# psycopg2enginecreate_engine(postgresqlpsycopg2://scott:tigerlocalhost/mydatabase)#python 连接postgresql使用psycopg2作为默认的DBAPIThe first time a method like Engine.execute()orEngine.connect()is called, the Engine establishes a real DBAPI connection to …

n的阶乘程序python_Python程序对N阶乘的尾随零进行计数

n的阶乘程序pythonFormula used: 使用的公式: Trailing 0s in N! Count of 5s in prime factors of n! floor(n/5) floor(n/25) floor(n/125) ....Example: 例: Input: N 23Output: 4Factorial of 23 is 25852016738884976640000 which has four …

c mysql使用场景_Mysql 场景

1个SQL题,1个场景题,会有点难度!SQL题该SQL题大量涉及到row_number,case when,group by等高级用法,有一定的实用价值,总结出来,供日后参考Question.1:分组汇总给定筛选条…

以己为壑

2019独角兽企业重金招聘Python工程师标准>>> 今天把软件工程里面关于面向对象的设计学完了,使我对面向对象OOA和OOD的思想有了进一步的认识,各科知识千沟万壑,犬牙交错,的确是这样,能蒙住自己眼的永远是你自己,而不是这个世界,因为美就在那里;裹住自己双足的的永远是…

macos安装vscode_如何使用VSCode进行PostgreSQL开发及调试

Visual Studio Code (VSCode)是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux。 它内置了对JavaScript,TypeScript和Node.js的支持,并具有丰富的其他语言(如C,C&#xff…

最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题

最小生成树 kruskalIn Electronic Circuit we often required less wiring to connect pins together. We can model this wiring problem with a connected, undirected graph G(V, E), where V is the set of pins, E is the set of possible interconnections between pair …

mysql数据库面试题 软件测试_软件测试数据库面试题一

前提本次分享只局限于 sql server 和 mysql 这两种数据库,其他数据库暂不总结正文1. 对查询的字段进行去重(distinct)用法注意:1. distinct【查询字段】,必须放在要查询字段的开头,即放在第一个参数;2. 只能在SELECT 语…

python数码时钟代码_python时钟的实现

from time importsleepimporttimeimportosclassClock(object):"""数字时钟""" def __init__(self, hour0, minute0, second0):"""初始化方法 :param hour: 时 :param minute: 分 :param second: 秒"""self._hourh…

PHP页面跳转

本文转载自:http://blog.sina.com.cn/s/blog_9a06890901014ol1.html PHP页面跳转一、header()函数 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转 注意:1、location和“:”号间不能有空格,否则不会跳…

如何打印出给定尺寸的方格_打印给定号码的表格| 8086微处理器

如何打印出给定尺寸的方格Problem statement: 问题陈述: Write an assembly language program in 8086 to print the table of a given integer. 在8086中编写汇编语言程序以打印给定整数的表。 Assumptions: Suppose the inputted number is at memory location …

python自动更新excel数据_如何更新Excel数据?(刷新所有查询)

我有一个带有一些查询的Excel xlsm文件。目前我每天打开它,点击“数据”选项卡中的“全部刷新”命令。我希望这件事能自动完成。我用python编写了一个脚本(我是python新手)。问题是,刷新数据并保存Excel文件后,刷新的数据不可见(我知道刷新工…

mongoDB 使用手册

2019独角兽企业重金招聘Python工程师标准>>> 1、基本操作db.AddUser(username,password) 添加用户db.auth(usrename,password) 设置数据库连接验证db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库db.commandHelp(name) returns the help for the commanddb.…

android搜索框功能实现_巧用 Trie 树,实现搜索引擎关键词提示功能

来源 | 码海责编 | Carol封图 | CSDN 付费下载于视觉中国我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词,如下,输入「python」后,底下会出…

Python | 从用户输入数据,保存到文件,读取并打印

Here, we have to input the data from the user, to read the data from user, we use input() method, and then the input data we have to store in the file by using write() method and then by using read() method we can get the data. 在这里,我们必须从…

python语句print type 1234的输出结果是_Python语句 print(type(1J))的输出结果是

【填空题】遍历输出文件所有行。 fopen("d:\\r2.txt","r") while True: str print(str,end) if not str: break f.close()【单选题】执行下列 Python语句将产生的结果是( ) i1 if (i): print(True) else: print( False)【单选题】Python语句 print(type(1/…