You need to enable JavaScript to run this app.
文档中心
云数据库 veDB MySQL 版

云数据库 veDB MySQL 版

复制全文
下载 pdf
冷热分离
冷热分离限制说明
复制全文
下载 pdf
冷热分离限制说明
本文汇总了使用冷热分离功能的相关限制。
功能限制
  • 仅支持在创建实例时选择是否创建包含冷热分离功能的实例;对于已创建的不包含冷热分离功能的实例,不支持动态开启该功能。
  • 已创建含有冷热分离功能的实例,不支持动态关闭该功能,但可以选择不使用冷数据归档能力。详情请参将冷数据转换回热数据
操作限制
冷表虽在功能上与普通表没有区别,仍然可以做 DDL 和 DML 操作,但性能较差,为避免 IO 异常和性能风险,部分操作不建议执行,详情如下表所示:
说明
  • 对冷表执行 DML/DDL 操作时,建议先将其转换为热表,待执行完 DML/DDL 操作之后再转换为冷表。
  • 以下场景示例仅作为参考,请结合实际业务场景判断可能存在的风险。
操作类型
冷表限制
说明
DDL
instant
尾部加列
支持
尾部加列只修改元数据。
改列类型(部分)
支持
inplace
创建/删除索引
不建议
会导致整表重建,因此不建议。
删除列
不建议
copy
optimize 等
不建议
DML
点查
主键查询
支持
主键查询可以快读定位数据。
二级索引查询
有风险
二级索引表可能需要回表,因此该操作具有一定的风险,需谨慎操作。
无索引查询
不建议
无索引查询会引起全表扫描,因此不建议。
范围查询
主键查询
有风险
仅支持小范围的查询。大范围的查询或无索引的查询,可能会引起全表扫描,因此不建议。
二级索引查询
有风险
无索引查询
不建议
全表扫描
不建议
写操作
主键更新
有风险
支持更新主键数据和相关的二级索引,仅建议少量低频的写操作,大批量的更新会存在性能风险。
二级索引更新
有风险
主键插入
有风险
其他
高并发读写操作
不建议
高并发的读写操作,可能会影响热表,导致无连接可用。
除以上场景外,分区表需特别注意查询更新是否带分区键。针对分区表的操作,若没有带分区键,MySQL 会遍历所有分区来查询满足条件的数据,容易带来性能风险。
DDL 限制
  • 普通表需要在 CREATE 或 ALTER 时通过设置 comment 调整表的冷热属性;分区表需要通过设置子分区的 comment 来调整冷热属性,不支持设置表级别的冷热属性,且不支持对包含二级分区的分区表做冷热转换。操作详情请参见归档冷数据
  • 仅支持在创建时对有明确分区的分区表指定冷热属性,因此不支持在创建时对 Hash 和 Key 类型的分区表指定子分区的冷热属性。只能在创建成功后,通过 ALTER 对子分区设置冷热属性。
  • 普通表转分区表时,表级别的冷热属性将被自动剔除,需要重新通过 ALTER 对子分区设置冷热属性。同理,分区表转普通表时也需要重新设置表级别的冷热属性。
  • -- 创建一个分区表
    create table table_name (a int) partition by hash(a) partitions 4;
    -- 将其转换为普通表,并设置冷热属性
    alter table table_name comment="storage_policy=cold" remove partitioning;
  • 表的冷热属性以 comment 为准,可继承 comment 的操作,则可继承冷热属性。
  • 对于重建或创建表的 DDL,如果重建之后保留 comment 则可以继承属性,如果不保留 comment 则属性丢弃,需要重新设置。例如:
  • Hash 分区的分区表,optimize 之后会重建子分区,老的子分区的属性无法继承。
  • CREATE TABLE LIKE Hash 分区表,无 comment 可继承,则新分区表都没有设置属性。
  • CREATE AS 不会继承 comment,因此所有被创建出来的表都不会有属性。
  • Exchange 分区表和普通表会同步冷热属性。
  • 如下所示,在 Exchange 分区表和普通表后,此表 a_1 中的 p0 分区将变为冷数据,表 a_n 将变为热数据。
  • -- 创建一个分区表
    create table a_1 (a int) partition by range columns(a) (
    partition p0 values less than (3) comment='storage_policy=hot',
    partition p1 values less than (5) comment='storage_policy=hot'
    )
    -- 创建一个普通表
    create table a_n (a int) comment="storage_policy=cold";
    -- Exchange
    alter table a_1 exchange partition p0 with table a_n;
最近更新时间:2025.10.24 17:36:37
这个页面对您有帮助吗?
有用
有用
无用
无用