美文网首页轻巧
MySQL 分区表 - 简单入门

MySQL 分区表 - 简单入门

作者: 右耳菌 | 来源:发表于2022-10-13 23:20 被阅读0次

    1. 分区表的概念


    2. 分区规则

    • RANGE 分区

    指定某一连续区间,把对应的行数据分配给分区。

    例子:

    CREATE TABLE t22 (uid INT NOT NULL,login_name VARCHAR(45) NOT NULL,age VARCHAR(45) NULL, PRIMARY KEY (uid))
      PARTITION BY RANGE ( uid ) (
        PARTITION p0 VALUES LESS THAN (3),
        PARTITION p1 VALUES LESS THAN (5),
        PARTITION p3 VALUES LESS THAN MAXVALUE); # 如果不想后续无法继续添加,可以不写 MAXVALUE 这行
    

    在没有设置MAXVALUE这行的情况下,可以使用下面的语句进行修改

    alter table t22 add partition(partition p2 values less than (5));
    
    • LIST 分区

    类似RANGE分区,区别在于LIST是枚举值列表的集合,RANGE是连续的区间值的集合。

    例子:

    CREATE TABLE t23 (sku_id INT NOT NULL,sku_type INT NOT NULL, PRIMARY KEY (uid))
      PARTITION BY LIST ( sku_type ) (
        PARTITION p0 VALUES IN (1,3),
        PARTITION p1 VALUES IN (2,4));
    
    • 复合分区

    子分区(subpartitioning)也称为复合分区(composite partitioning),针对每个分区的进一步划分。

    • Hash分区
      计算Hash值,与分区数量取模得出位置。

    例子:

    CREATE TABLE employees (
      id INT NOT NULL,
      fname VARCHAR(30),
      hired DATE NOT NULL DEFAULT '1970-01-01',
      separated DATE NOT NULL DEFAULT '9999-12-31',
      job_code INT,
      store_id INT
    )
    PARTITION BY HASH(store_id)
    PARTITIONS 4;
    

    Mysql中还提供一个名为LINEAR HASH分区的方式,和Hash算法不同,其他的一样

    • Key分区
      类似Hash,只不过Hash是自己指定的,而key分区方式是Mysql服务器提供的。有主键用主键,没主键用唯一键,你也可以指定具体的字段。

    例子:

    CREATE TABLE k1(
      id INT NOT NULL,
      name VARCHAR(20),
      UNIQUE KEY (id)
    )
    PARTITION BY KEY(这里是key)
    PARTITIONS 2;
    

    3. 分区表的好处

    1. 突破文件系统限制,单表存储的数据更多;
    2. 对于无跨区查询的场景,性能更好。数据被分开,减少了查询时加载的数据量;
    3. 可以备份指定的分区数据。(文件形式直接备份,效率更快);
    4. 快速删除分区数据;

    4. 注意事项

    1. MySQL分区中如果存在主键或唯一键,则分区列必须包含在其中
    2. 分区表达式里面不是所有的函数都支持
    3. 对于原生的RANGE分区,LIST分区,HASH分区,分区对象返回的只能是整数值

    如果觉得有收获就点个赞吧,更多知识,请点击关注查看我的主页信息哦~

    相关文章

      网友评论

        本文标题:MySQL 分区表 - 简单入门

        本文链接:https://www.haomeiwen.com/subject/jchqzrtx.html