MAPREDUCE服务 MRS-数据查询:数据修改

时间:2024-04-16 08:56:36

数据修改

  • 建议慎用delete、update的mutation操作

    标准SQL的更新、删除操作是同步的,即客户端要等服务端反回执行结果(通常是int值);而ClickHouse的update、delete是通过异步方式实现的,当执行update语句时,服务端立即返回执行成功还是失败结果,但是实际上此时数据还没有修改完成,而是在后台排队等着进行真正的修改,可能会出现操作覆盖的情况,也无法保证操作的原子性。

    1. 业务场景要求有update、delete等操作,建议使用ReplacingMergeTree、CollapsingMergeTreeVersionedCollapsingMergeTree引擎,使用方式参见:https://clickhouse.tech/docs/zh/engines/table-engines/mergetree-family/collapsingmergetree/
  • 建议少或不增删数据列

    业务提前规划列个数,如果将来有更多列要使用,可以规划预留多列,避免在生产系统跑业务过程中进行大量的alter table modify列操作,导致不可以预知的性能、数据一致性问题。

  • 对于批量数据清理,建议根据分区来操作:

    ALTER TABLE table_name DROP PARTITION partition_name;

  • 禁止修改索引列

    对索引列的修改会导致现有索引失效,触发重建索引,期间查询数据不准确。

    如果业务场景必须修改索引列,推荐用ReplacingMergeTree引擎建表,使用数据写入+去重引擎代替数据更新场景:https://clickhouse.tech/docs/zh/engines/table-engines/mergetree-family/collapsingmergetree/

support.huaweicloud.com/bestpractice-mrs/mrs_05_0101.html