首页 > mysql 的 RANGE 分区有价值吗?

mysql 的 RANGE 分区有价值吗?

今天看了一下 MySQL 的 RANGE 分区,感觉限制太大了,不知道在实际应用是否有价值?

例如,在 RANGE 分区中,要么分区表上没有主键/唯一键,要么分区表的主键/唯一键都必须包含分区键。

-- 表包含一个主键和一个唯一键
CREATE TABLE emp(
    id INT NOT NULL,
    store_id INT NOT NULL,
    PRIMARY KEY(id),
    UNIQUE KEY key_store_id(store_id)
)
-- 在主键上分区
PARTITION BY RANGE(id)(
    PARTITION p0 VALUES LESS THAN (10),
    PARTITION p1 VALUES LESS THAN (20),
    PARTITION p2 VALUES LESS THAN (30)
);

抛出错误:A UNIQUE INDEX must include all columns in the table's partitioning function

-- 表包含一个主键和一个唯一键
CREATE TABLE emp(
    id INT NOT NULL,
    store_id INT NOT NULL,
    PRIMARY KEY(id),
    UNIQUE KEY key_store_id(store_id)
)
-- 在唯一键上分区
PARTITION BY RANGE(store_id)(
    PARTITION p0 VALUES LESS THAN (10),
    PARTITION p1 VALUES LESS THAN (20),
    PARTITION p2 VALUES LESS THAN (30)
);

抛出错误:A PRIMARY KEY must include all columns in the table's partitioning function

在设计表的时候,主键肯定是不能缺少的,也就是说我们在实际的分区操作时只能按照主键来分区,同时该表还必须保证没有任意一列是包含唯一键的。
面对这么多的限制,RANGE 分区真的有价值吗?


range一般都是按照时间 例如季度 年份等来划分 这是企业使用最多的表分区 以及它配合的rangehash**


减小单分区文件大小啊,这样查询范围少了,会更快


range分区主要是用来按照时间分区的, 可以把一些老数据隔离开来, 甚至删掉

【热门文章】
【热门文章】