mysql8.0 定时创建分区表记录 每天定时创建下一天的分区表
因单表数据太大, 需要表按时间分区 分区字段 pay_out_date 按天分 要求自动创建
1. 创建分区表
MYSQL的分区字段,必须包含在主键字段内
常见错误提示
错误提示:#1503
A PRIMARY KEY MUST INCLUDE ALL COLUMNS IN THE TABLE'S PARTITIONING FUNCTION
MySQL主键的限制,每一个分区表中的公式中的列,必须在主键/unique key 中包括
CREATE TABLE `game_bet` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`create_date` DATETIME(6) DEFAULT NULL,
`create_person` VARCHAR(50) DEFAULT NULL,
`update_date` DATETIME(6) DEFAULT NULL,
`update_person` VARCHAR(50) DEFAULT NULL,
`bet_code` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`agent_code` VARCHAR(50) NOT NULL,
`game_id` INT(11) NOT NULL,
`game_name` VARCHAR(50) DEFAULT NULL,
`room_code` VARCHAR(11) NOT NULL,
`desk_code` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` BIGINT(20) NOT NULL,
`user_name` VARCHAR(50) NOT NULL,
`round_code` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`commission` DECIMAL(18,3) NOT NULL,
`bet_amount` DECIMAL(18,3) NOT NULL,
`valid_bet_amount` DECIMAL(18,3) NOT NULL,
`pay_out` DECIMAL(18,3) NOT NULL,
`win_amount` DECIMAL(18,3) NOT NULL,
`settle_flag` INT(11) NOT NULL,
`device` INT(11) NOT NULL,
`login_ip` VARCHAR(50) NOT NULL,
`currency` VARCHAR(50) NOT NULL,
`bet_date` DATETIME(6) DEFAULT NULL,
`pay_out_date` DATETIME(6) NOT NULL DEFAULT '1970-01-01 00:00:00.000000',
`result` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`,`pay_out_date`),
KEY `IX_game_bet_agent_code` (`agent_code`),
KEY `IX_game_bet_create_date` (`create_date`),
KEY `IX_game_bet_device` (`device`),
KEY `IX_game_bet_game_id` (`game_id`),
KEY `IX_game_bet_pay_out_date` (`pay_out_date`),
KEY `IX_game_bet_round` (`round_code`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
PARTITION BY RANGE (to_days(`pay_out_date`))
(PARTITION p20190421 VALUES LESS THAN (737535) ENGINE = InnoDB)
2. 创建每日新增表分区的存储过程
DELIMITER $$
USE `poker_games`$$
DROP PROCEDURE IF EXISTS `time_partition_procedure`$$
CREATE DEFINER=`root`@`%` PROCEDURE `time_partition_procedure`()
BEGINSELECT REPLACE(b.partition_name,'p','') INTO @in_date FROM information_schema.PARTITIONS b WHERE b.table_name ='game_bet' ORDER BY b.partition_ordinal_position DESC LIMIT 1;
SET @max_date= DATE_ADD(@in_date,INTERVAL 1 DAY)+0 ;
SET @date= DATE_ADD(@in_date,INTERVAL 1 DAY)+0 ;
SET @sql=CONCAT('ALTER TABLE game_bet add PARTITION (PARTITION p',@date,' VALUES LESS THAN (TO_DAYS(''',@max_date,''')));');
SELECT @sql;
SELECT @max_date;PREPARE strsql FROM @sql; #预执行sql
EXECUTE strsql; #执行sql
DEALLOCATE PREPARE strsql; #释放sql
COMMIT;
END$$
DELIMITER ;
3. 创建每天执行存储的事件 明天凌晨3点执行
DELIMITER $$
CREATE EVENT `poker_games`.`time_partition_event`
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(CURRENT_DATE+1,INTERVAL 3 HOUR)
ON COMPLETION PRESERVE
ENABLE DO
BEGIN
CALL time_partition_procedure();
END;
mysql8.0 定时创建分区表记录 每天定时创建下一天的分区表的更多相关文章
- MySQL8.0数据库出现的问题——外码创建方式、外键约束两个引用列不兼容问题、check约束问题、用触发器代替check约束、关键字DELIMITER、删除添加索引、删除添加外键约束、和一些数据库方面的操作
一.首先先说一下我们都需要建立那些表 mysql> CREATE TABLE IF NOT EXISTS `student`( -> `sno` CHAR(8) NOT NULL, -&g ...
- Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)
1. 主从复制解释 将主数据库的增删改查等操作记录到二进制日志文件中,从库接收主库日志文件,根据最后一次更新的起始位置,同步复制到从数据库中,使得主从数据库保持一致. 2. 主从复制的作用 高可用 ...
- Windows10安装MySQL8.0
1.到MySQL官网下载安装包:https://dev.mysql.com/downloads/mysql/:选择8.0版本: 2.将下载好的安装包(mysql-8.0.12-winx64 .zip) ...
- MySQL8.0在Windows下的安装和使用
前言 MySQL在Windows下有2种安装方式:1.图形化界面方式安装MySQL 2.noinstall方式安装MySQL.在这里,本文只介绍第二种方式:以noinstall方式安装MySQL,以及 ...
- windows10更换mysql8.0.17
下载windows版本mysql 解压后创建my.ini文件初始化mysql和data文件夹用来存数据 my.ini内容 [mysqld] # 设置3306端口 port=3306 # 设置mysql ...
- 实践:Linux下安装mysql8.0
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.下载mysql8.0安装包 1.在local创建mysql文件夹 cd /usr/local mkdir mysql cd mysql 2.使 ...
- mysql命令行创建存储过程命令行定时执行sql语句
mysql -uroot -p show databases; use scm; show tables; show procedure status; 其他命令: SHOW VARIABLES LI ...
- mysql8.0.16操作记录
mysql8.0.16操作记录 2.1.登录 -uroot -p'AnvcTMagdLarwNV3CKaC' mysql: [Warning] Using a password on the comm ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
随机推荐
- [ZJOI2011]营救皮卡丘
题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队一共有N个据点,据点之间存在M条双 ...
- 解决pgpool启动报错 ifup[/sbin/ip] doesn't have setuid bit
1.问题出现: 在centos7启动pgpool服务器报错ifup[/sbin/ip] doesn't have setuid bit 2018-11-25 01:14:14: pid 38122: ...
- vscode笔记(一)- vscode自动生成文件头部注释和函数注释
VsCode 自动生成文件头部注释和函数注释 作者:狐狸家的鱼 本文链接:vscode自动生成文件头部注释和函数注释 GitHub:sueRimn 1.安装插件KoroFileHeader 2.设置 ...
- python之路day07-集合set的增删查、列表如何排重(效率最高的方法)、深浅copy
集合set 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- vue中的computed(计算属性)和watch(监听属性)的特点,以及深度监听
//计算属性是根据data中已有的属性,计算得到一个新的属性, <div>全名:{{fullName}}</div> 创建计算属性通过computed关键字,它是一个对象 计算 ...
- 第二周java学习总结
学号 20175206 <Java程序设计>第二周学习总结 教材学习内容总结 第二章是基本数据类型与数组,第三章是运算符.表达式和语句的内容.如果说第一章是让我们了解JAVA,那么第二章和 ...
- Python菜鸟快乐游戏编程_pygame(2)
Python菜鸟快乐游戏编程_pygame(博主录制,2K分辨率,超高清) https://study.163.com/course/courseMain.htm?courseId=100618802 ...
- .Net Core在Centos7上初体验
本文主要内容是简单介绍如何在centos7上开发.Net Core项目,在此之前我们首先了解下.Net Core的基本特性. 1 .Net Core和.Net FrameWork的异同 1.1 .Ne ...
- Angular记录(7)
文档资料 箭头函数--MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_fun ...
- arrow function and bind
Can you bind arrow functions? https://stackoverflow.com/questions/33308121/can-you-bind-arrow-functi ...