mysql实现分区

文章目录

一、根据时间创建分区

  1. 创建时间分区表

    java 复制代码
    CREATE TABLE `table_time`  (
      `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `STA_ID` int(11) NULL DEFAULT NULL COMMENT '业务ID',
      `STA_NAME` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '业务名称',
      `MONITOR_TIME` datetime(0) NOT NULL   COMMENT '监测时间',
      PRIMARY KEY (`ID`,`MONITOR_TIME`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 2111262 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '测试表' ROW_FORMAT = Dynamic
    partition by range (to_days(MONITOR_TIME)) (
     	PARTITION p0 VALUES LESS THAN (TO_DAYS('2023-05-01')),
        PARTITION p1 VALUES LESS THAN (TO_DAYS('2023-06-01')) 	
        );
  2. 查看分区是否生效

    java 复制代码
    select partition_name part, partition_expression expr, partition_description descr, table_rows
     from  INFORMATION_SCHEMA.partitions  where TABLE_SCHEMA="库名" AND TABLE_NAME="表名";
  3. 时间格式化

    ps:由于我们是以时间作为分区,时间会被转成特殊的数字,所以如果想要查看分区属于哪个时间,还需要格式化下时间数据才可以查看

    java 复制代码
     SELECT DATE_SUB(DATE_ADD('0000-01-01', INTERVAL 740543 DAY), INTERVAL 1 DAY);

二、根据业务主键id创建分区

  1. 创建业务主键分区表

    java 复制代码
    CREATE TABLE `table_id`  (
      `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键  字符串',
      `car_id` int(11) NOT NULL  COMMENT '车辆ID',
      `car_no` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '车牌号'
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '车辆行驶轨迹' ROW_FORMAT = Dynamic
    PARTITION BY LIST COLUMNS(car_id)
    (PARTITION p0 VALUES IN (0) ENGINE = InnoDB);
  2. 根据业务主键添加分区

    java 复制代码
    ALTER TABLE table_id ADD PARTITION (PARTITION p_197401 VALUES IN (197401) ENGINE = InnoDB);
  3. 插入数据

    ps:插入数据的时候,可以指定分区。如果不指定分区,也会自行根据分区入库。

    java 复制代码
    insert into table_id partition(p_197401) (car_id,car_no)  values XXXXX;
相关推荐
Hello.Reader28 分钟前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq1951334543129 分钟前
Redis-主从复制-分布式系统
java·数据库·redis
好奇的菜鸟3 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°3 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜4 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
DuelCode4 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
幽络源小助理5 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
Hello.Reader5 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
烛阴5 小时前
简单入门Python装饰器
前端·python
好开心啊没烦恼6 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy