轻巧

MySQL 分区表 - 简单入门

2022-10-13  本文已影响0人  右耳菌

1. 分区表的概念


2. 分区规则

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

例子:

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));

类似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),针对每个分区的进一步划分。

例子:

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算法不同,其他的一样

例子:

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分区,分区对象返回的只能是整数值

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

上一篇 下一篇

猜你喜欢

热点阅读