• MySql分区简单说明


    数据库分区,是数据库管理系统 提供的 一个 比较好的功能。当数据量大时,除了 分表,还可以对一个表进行分区。这样,就可以 再一个分区内 操作数据,提高性能。

    常见的分区有 range、hash,一般情况下,range分区比较普遍。

    1. 非分区表操作:

    注意的是,表分区,一定是在 创建表的时候 进行分区,后面才可以增加分区、删除分区。也就是说,分区操作的前提是 表 是一个 分区表

    比如:如果不是分区表,但是想增加分区时,会报错:

     1505 - Partition management on a not partitioned table is not possible

    这种情况,如果 必须创建分区的话,可以执行下面的命令,将非分区表转为分区表:

    alter table table_name PARTITION by range columns(`id`)
    (
    PARTITION  p1 values less than (5),
    PARTITION  p2 values less than (10),
    PARTITION  p3 values less than (30),
    PARTITION  p4 values less than (40))
     

    2. 分区表操作:

    创建分区表的时候,分区字段必须是:

    1. 主键

    2. 非空

    创建非分区表:

    CREATE TABLE `t_1` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `create_time` datetime NOT NULL,
      `update_time` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

    创建分区表: 

    注意,在创建语句后面的 分号 ; 要去掉,不然 后面的分区语句就是单独的命令了。

    CREATE TABLE `t_1` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `create_time` datetime NOT NULL,
      `update_time` datetime NOT NULL,
      PRIMARY KEY (`id`,`create_time`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4


     PARTITION by range columns(`create_time`)
    (
    PARTITION  p1 values less than ('2022-04-01 00:00:00'),
    PARTITION  p2 values less than ('2022-07-01 00:00:00'),
    PARTITION  p3 values less than ('2022-10-01 00:00:00'),
    PARTITION  p4 values less than ('2023-01-01 00:00:00'))

    在分区表上 新增分区

    alter table t_1 add PARTITION 
    (
    PARTITION  p5 values less than ('2023-04-01 00:00:00'),
    PARTITION  p6 values less than ('2023-07-01 00:00:00'),
    PARTITION  p7 values less than ('2023-10-01 00:00:00'),
    PARTITION  p8 values less than ('2024-01-01 00:00:00')) 

    在分区表上 删除分区

    alter table t_1 drop partition p8; 

    分区维护 似乎比较麻烦,需要手动处理。可以设置定时任务 来完成 分区表的维护。

    查询分区表 :

    如果 没有加分区,则是全分区扫描:

     可以在查询语句中加上分区号,则只在 指定 分区中 扫描

    select * from t_1  partition(p1) where id=1

    3. 分区特殊操作

    3.1 maxvalue

    创建分区时,设置一个默认分区,当数据不在其他分区内时,就会落在这个默认分区内。然后再对该默认分区进行 重新组织

    alter table z_student_p PARTITION by range columns(`id`)
    (
    PARTITION  p1 values less than (5),
    PARTITION  p2 values less than (10),
    PARTITION  p3 values less than (30),
    PARTITION  p4 values less than (40),
    PARTITION  pmax values less than maxvalue)

    设置分区时,创建了一个名为 pmax 的分区,该分区包含了 小于 maxvalue 的所有数据。对于pmax分区,就把他当成一个普通的分区即可,和 p1/p2/p3/p4 这种分区没有区别,唯一不同的是,pmax分区 数据的范围更大而已。也可以对pmax分区进行删除等操作。

    3.2 REORGANIZE 

    对 pmax 分区重新分配

    alter table z_student_p  REORGANIZE  PARTITION pmax into 
     (
       PARTITION  p5 values less than (90),
       PARTITION  p6 values less than (100),
       PARTITION  pmax values less than maxvalue
     )

    注意的是,重新分配时,仍然需要再加上 pmax 分区才行。

  • 相关阅读:
    无处不在的PDCA
    网络安全(黑客技术)—小白自学
    国际版腾讯云/阿里云:全站加快有哪些功用?有哪些优势?适用于什么场景?
    Nodejs 使用 ZooKeeper 做服务发现
    嵌入式学习笔记(44)S5PV210的SD卡启动实战
    uni-app:前端实现心跳机制(全局)+局部页面控制心跳暂停和重新心跳
    第二十一章·备忘录模式
    【CAS:1339202-33-3 |Diazo Biotin-PEG3-azide】生物素标记试剂
    python之word文档生成
    ClickHouse 创建数据库建表视图字典 SQL
  • 原文地址:https://blog.csdn.net/htydowd/article/details/126852861