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
这个页面对您有帮助吗?
有用
有用
无用
无用