首页 > 数据库 >MySQL表按天分区

MySQL表按天分区

时间:2023-08-23 22:15:18浏览次数:44  
标签:partition LESS 分区 PARTITION 按天 test 2023 MySQL

建表语句

要分区的字段必须为主键或联合主键之一

CREATE TABLE `test_partition` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `day` datetime NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`,`day`)
);

插入数据

INSERT INTO test_partition values 
	(1, '2023-07-01 12:30:30', 'zhangsan'), 
	(2, '2023-07-20 12:30:30', 'lisi'), 
	(2, '2023-08-02 12:30:30', 'wangwu');

创建分区

ALTER table test_partition PARTITION BY RANGE COLUMNS(day) (
	PARTITION p20230801 VALUES LESS THAN ('2023-08-01'),
	PARTITION p20230901 VALUES LESS THAN ('2023-09-01')
);

新增分区

ALTER table test_partition ADD PARTITION (
	PARTITION p20231001 VALUES LESS THAN ('2023-10-01'),
	PARTITION p20231101 VALUES LESS THAN ('2023-11-01')
);

删除分区数据

ALTER table test_partition truncate PARTITION p20231101;

删除分区

数据存储在分区上,删除分区的同时也会删除分区上的数据

ALTER table test_partition DROP PARTITION p20231101;

查看分区

SELECT partition_name,partition_description from information_schema.partitions
WHERE table_name = 'test_partition' and table_schema = '**database_name**';

重新定义分区

如果想在中间增加分区的话不能使用ADD PARTITION

ALTER table test_partition ADD PARTITION (
	PARTITION p20230810 VALUES LESS THAN ('2023-08-10')
);
报错:
VALUES LESS THAN value must be strictly increasing for each partition

重新定义分区:在不丢失数据的情况下,重新编辑分区
ALTER TABLE ... REORGANIZE PARTITION

拆分分区

-- 将p20230901分区拆分成p20230810和p20230901分区
ALTER TABLE test_partition REORGANIZE PARTITION p20230901 INTO (
	PARTITION p20230810 VALUES LESS THAN ('2023-08-10'),
	PARTITION p20230901 VALUES LESS THAN ('2023-09-01')
);

合并分区

将多个相邻的RANGE分区合并为一个RANGE分区或多个RANGE分区, 合并后的分区必须和原来的区间覆盖相同

-- 将p20230810和p20230901分区合并为p20230901分区
ALTER TABLE test_partition REORGANIZE PARTITION p20230810,p20230901 INTO (
	PARTITION p20230901 VALUES LESS THAN ('2023-09-01')
);

参考

MySQL:创建分区, 按天自动分区
https://www.cnblogs.com/casoli/p/17558396.html

Mysql分区
https://www.cnblogs.com/lykbk/p/xdvxddf43545345354353.html

MySQL创建分区方法,及分区中常用SQL示例
https://blog.csdn.net/qiuweifan/article/details/131268321

标签:partition,LESS,分区,PARTITION,按天,test,2023,MySQL
From: https://www.cnblogs.com/qode/p/17652886.html

相关文章

  • MySQL 5.7 的安装与配置
    一、下载MySQL链接:https://pan.baidu.com/s/16KWOzmHbAvXdFwZi73Obrg?pwd=bwcx提取码:bwcx--来自百度网盘超级会员V1的分享(1)官网:https://dev.mysql.com/downloads/windows/installer/(2)点击Nothanks,juststartmydownload.等待下载完成!!二、安装MySQL(1)选择自定义......
  • net6 使用ef core 映射mysql数据库(方法一)
    1.安装下载nuget包Pomelo.EntityFrameworkCore.MySql和Microsoft.EntityFrameworkCore.Design如下图 2.创建一个模型类,之后映射到数据库里面的表、字段和这个类是一致的。publicclassMovies{///<summary>///id///</summary>......
  • Mysql学习
    ​Mysql​数据库(DataBase,简称DB):存储和管理数据的仓库。数据库管理系统(DataBaseManagementSystem,简称DBMS)DBMS是操作和管理数据库的大型软件。将来我们只需要操作这个软件,就可以通过这个软件来操纵和管理数据库了。此时又出现一个问题:DBMS这个软件怎么知道要操作的......
  • MySQL 入门
    0x01简介数据库(Database)是按照数据结构来组织、存储和管理数据的仓库数据库管理系统(DatabaseManagementSystem,又称DBMS)主要用于对数据库的操作与管理,是一种软件,如MySQL0x02安装配置(1)Mac使用命令brewinstallmysql下载并安装使用命令mysql.serverstart启动My......
  • MySQL 查看SQL进程和杀掉进程
    要在MySQL中查看正在执行的长时间运行的SQL语句,您可以使用SHOWPROCESSLIST命令。这个命令显示了当前MySQL服务器上正在执行的所有进程的信息,包括每个进程的ID、用户、主机、数据库、命令和执行时间等信息。SHOWFULLPROCESSLIST;使用FULL关键字可以显示完整的SQL......
  • [MySQL]递归生成数据行
    来源:https://baijiahao.baidu.com/s?id=1744215294693190607&wfr=spider&for=pc DEMO:WITHRECURSIVEcteAS( SELECT1asnUNION SELECTn+1FROMcteWHEREn<30)SELECT*FROMcte; 递归生成最近30天WITHlast30dayAS( WITHRECURSIVEcteAS( SEL......
  • mysql8.0 新建数据库,迁移数据,账号权限,和mysql5.0的兼容性问题等踩坑记录
    项目里一直用的是mysql5.7,这次立了个新项目,我果断换上mysql8.0,心想肯定新版的性能更好更强大啊,其实无形间也踩了不少坑,mysql8.0和mysql5.0的小改动(升级)引发的兼容性问题。。一、mysql8.0搭建首先是搭建mysql8.0环境,这里当然使用时下最方便的docker-compose方式了my.cnf如下[m......
  • Mysql调优工具:mysqltuner.pl及tuning-primer.sh
    一、概述MySQL调优工具是用于分析和优化MySQL数据库性能的软件工具。它们可以帮助识别潜在的性能瓶颈、优化查询性能、调整配置参数以及提高数据库的吞吐量和响应时间。今天分享2个常用的工具。mysqltuner.pl:一款免费的Perl脚本工具,用于检查和优化MySQL服务器的配置参数。MySQL......
  • docker compose 部署mysql数据库
    docker-compose.ymlversion:"3"services:mysql:image:mysql:5.7container_name:mysqlhostname:mysqlports:-3306:3306volumes:-/home/mysql/data:/var/lib/mysql-/home/mysql/conf/my.cnf:/etc/my.cnf......
  • mysql安装-linux
    参考来源:https://www.cnblogs.com/werr370/p/14633785.html#   问题1:cat/var/log/mysqld.log查看日志出现:FailedtoinitializeDDStorageEngine.DataDictionaryinitializationfailed.1、systemctlstartmysqld执行报错,查看日志 参考来源:https://blog.csdn.n......