mysql分区表学习之日期分区

 更新时间:2023年08月03日 08:34:30   作者:Phil_xian  
这篇文章主要给大家介绍了关于mysql分区表学习之日期分区的相关资料,分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表,需要的朋友可以参考下

1.创建分区表

CREATE TABLE `api_log` (
  `requestId` varchar(64) NOT NULL COMMENT '调用的唯一标示',
  `systemCode` varchar(64) NOT NULL COMMENT '业务系统编码',
  `tongID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `tong_time`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `pt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '分区字段',
  PRIMARY KEY (`tongID`,`requestId`,`pt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='日志信息表'
/*!50100 PARTITION BY RANGE (TO_DAYS(pt))
(PARTITION p20230510 VALUES LESS THAN (739015) ENGINE = InnoDB,
 PARTITION p20230511 VALUES LESS THAN (739016) ENGINE = InnoDB) */;

2.查看分区

-- 01 查询单分区
 SELECT * from api_log partition (p20230510)

-- 02 查看所有分区

SELECT
    PARTITION_NAME,
    TABLE_ROWS 
FROM
    INFORMATION_SCHEMA.PARTITIONS 
WHERE
    TABLE_NAME = 'api_log';

3.添加分区

-- 添加分区
ALTER TABLE hz_api_log_delta add PARTITION (PARTITION p20230512 VALUES LESS THAN (TO_DAYS('2023-05-12')));

4.存储过程:分区删除与创建

delimiter //
CREATE  PROCEDURE `pro_create_del_pt`()
BEGIN
	#Routine body goes here...
## 01.新建后面两天的分区
## 02获取当前时间
SELECT CONCAT('p',DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 2 DAY),'%Y%m%d')) into @pname;
SELECT DATE_ADD(NOW(),INTERVAL 2 DAY) into @pdate;
#删除的分区时间
SELECT  DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -17 DAY) ,'%Y%m%d') into @ddate;
## 03新增分区
-- ALTER TABLE api_log add PARTITION (PARTITION p20230509 VALUES LESS THAN (TO_DAYS(DATE_ADD(NOW(),INTERVAL 1 DAY))));
		set @sql_add_p=concat("ALTER TABLE api_log add PARTITION (PARTITION ",@pname,"  VALUES LESS THAN (TO_DAYS('",@pdate,"')))");
	prepare sql_add_p from @sql_add_p;
	EXECUTE sql_add_p ;
	DEALLOCATE PREPARE sql_add_p;	
## 04 删除分区
#alter table api_log drop partition p20230507;
		set @sql_del_p=concat("ALTER TABLE api_log drop PARTITION p",@ddate);
	prepare sql_del_p from @sql_del_p;
	EXECUTE sql_del_p ;
	DEALLOCATE PREPARE sql_del_p;	
END
 //
delimiter ;

5.事件定时

-- 创建事件
delimiter $$
create event event_pro_create_del_pt
on schedule 
	every 1 DAY 
	STARTS '2023-05-10 20:00:00 '
	comment '每日20:00执行'
DO call pro_create_del_pt();
$$
delimiter ;
-- 查看事件
show events;
或者
select * from mysql.event;

6.触发器设计:子表每插入一行,总表获得一行

-- 创建事件
delimiter $$
CREATE  TRIGGER `trigger_api_log` AFTER INSERT ON `api_log` 
FOR EACH ROW BEGIN
insert into hz_api.api_log_all 
(requestId,systemCode,sjly_part) VALUES
 (NEW.requestId,NEW.systemCode,'区县');
end;
$$
delimiter ;

7.创建索引

--  创建普通索引:在tong_time字段
ALTER TABLE db_base.api_log ADD INDEX index_name ( tong_time );
-- 查看索引
show index from db_base.api_log;

8.添加枚举型字段

ALTER TABLE db_base.api_log add SJLY_PART enum('线上','线下') default null COMMENT '数据来源';

总结 

到此这篇关于mysql分区表学习之日期分区的文章就介绍到这了,更多相关mysql日期分区内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中WITH ROLLUP的具体使用

    MySQL中WITH ROLLUP的具体使用

    本文主要介绍了MySQL中WITH ROLLUP的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • 一步步教你利用Mysql存储过程造百万级数据

    一步步教你利用Mysql存储过程造百万级数据

    因工作需要维护一张中建表数据内置,所以得造数据所以使用存储过程来造数据,下面这篇文章主要给大家介绍了关于如何一步步利用Mysql存储过程造百万级数据的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • MySQL常见内置函数以及其使用教程

    MySQL常见内置函数以及其使用教程

    MySQL数据库中提供了很丰富的函数,MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等,下面这篇文章主要给大家介绍了关于MySQL常见内置函数以及其使用的相关资料,需要的朋友可以参考下
    2022-12-12
  • MySQL数据库char与varchar的区别分析及使用建议

    MySQL数据库char与varchar的区别分析及使用建议

    本文主要介绍了mysql中VARCHAR与CHAR字符型数据的差异以及这两种字符型数据在项目中的使用建议,真心不错。值得一看。小编有种受益匪浅的感觉。
    2014-09-09
  • MYSQL EXPLAIN结果解读

    MYSQL EXPLAIN结果解读

    本文主要介绍了MySQL查询中的一些关键字,如:SIMPLE,PRIMARY,UNION,DEPENDENTUNION,UNIONRESULT,SUBQUERY,DEPENDENTSUBQUERY,DERIVED,UNCACHEABLESUBQUERY等,文章详细解析了这些关键字的含义和用途
    2024-10-10
  • MySQL学习必备条件查询数据

    MySQL学习必备条件查询数据

    这篇文章主要介绍了MySQL学习必备条件查询数据,首先通过利用where语句可以对数据进行筛选展开主题相关内容,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03
  • Ubuntu 18.04下mysql 8.0 安装配置方法图文教程

    Ubuntu 18.04下mysql 8.0 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Ubuntu 18.04下mysql 8.0 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

    浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

    SQL语句行列转换的两种方法 case...when和pivot函数应用,运用pivot 函数只支持数据库版本2005以上的。一般运用case when else end 的方法比较多,比较普遍
    2013-08-08
  • Linux系统下Mysql使用简单教程(一)

    Linux系统下Mysql使用简单教程(一)

    这篇文章主要介绍了Linux系统下Mysql使用简单教程(一)的相关资料,需要的朋友可以参考下
    2016-05-05
  • Mysql数据库开启远程连接流程

    Mysql数据库开启远程连接流程

    文章讲述了如何在本地MySQL数据库上开启远程访问,并详细步骤包括配置防火墙、设置MySQL用户权限、使用Navicat进行远程连接等
    2025-02-02

最新评论