云数据库 GAUSSDB-UPDATE:注意事项

时间:2024-11-13 14:46:21

注意事项

  • 表的所有者、拥有表UPDATE权限的用户或拥有UPDATE ANY TABLE权限的用户,皆有权限更新表中的数据,当三权分立开关关闭时,系统管理员默认拥有此权限。
  • UPDATE...... LIMIT row_count 仅支持执行计划下推的部分场景(不支持复制表),前置条件要求过滤条件包含等值分布列且过滤条件相对简单,避免出现强制类型转换的情况。如果执行失败,请简化过滤条件。
  • 对expression或condition条件里涉及到的任何表要有SELECT权限。
  • 仅当表属性enable_update_distkey设置为on或KMEANS分布,且在约束条件下时,支持更新(UPDATE)分布列的操作。否则,分布列不支持更新(UPDATE)操作。

    支持更新(UPDATE)分布列操作的约束如下:

    • 仅当相应表属性enable_update_distkey设置为on或KMEANS分布时才支持更新分布列;
    • 不支持将UPDATE语句下推DN执行,直接生成PGXC计划,不会根据更新分布列前后值而对计划做改变;
    • 不支持带有行级UPDATE TRIGGER的表,否则会执行失败,报错进行提示。对行级INSERT/DELETE TRIGGER不生效,update statement级TRIGGER正常执行;
    • 不支持并发更新同一行,先获取锁的执行,DN上后获取锁的按照GUC参数concurrent_dml_mode设置情况进行不同的行为(返回0或报错)。如果报错,则可能存在两种情况:(1)报错提示信息为update distribute column conflict;(2)当获取锁时间超过阈值时,报错提示信息为锁超时。
    • 不支持带有全局二级索引(GSI)的表,否则会执行报错。
    • 只支持HASH分布和KMEANS分布,不支持LIST/RANGE分布表,否则会执行报错。
    • 不支持MERGE INTO和UPSERT更新分布列的行为,否则会执行报错。
    • 不支持gtm_free,否则会执行报错。
    • 不支持UPDATE RETURNING,否则会执行报错。
    • 不支持带有关联表的语句,否则会执行报错。
    • 不支持UPDATE + LIMIT,否则会执行报错。
    • 由于ORA兼容和MYSQL兼容模式下不支持DELETE指定多分区,UPDATE分布列反解析DELETE语句时不会带有多分区,数据一致性由条件tableoid保证。
  • 对于子查询是STREAM计划的UPDATE语句,不支持并发更新同一行。
  • 不支持用户通过UPDATE系统表的方式对数据库字符编码进行修改,该操作会导致存在存量数据或其他部分操作异常的情况。如需更改数据库的字符集编码,应当遵循切换数据库流程,进行相关的数据迁移操作。
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0696.html