云数据库 GAUSSDB(FOR MYSQL)-热点行更新:约束与限制

时间:2024-08-07 14:55:10

约束与限制

  • GaussDB (for MySQL)实例的内核版本为2.0.54.240600及以上时支持使用该功能。
  • 功能使用约束如下:
    • where条件中只能使用主键或唯一索引的等值匹配,并且只能更新单条记录。否则将绕过优化正常更新。
    • 不允许修改索引列,否则将绕过优化正常更新。
    • 只对修改列为整数的更新生效,否则将绕过优化正常更新。
    • 只允许对热点行记录进行两个元素的加减操作,且第一个元素与等号左侧相等并满足唯一索引等约束,不允许赋值操作。假设c列为待修改列,d为记录的普通列,那么只允许进行类似c=c+1,或者c=c-1的操作,不允许进行c=d+1,c=1+c,c=c+1+1,c=1+c+1等操作。否则将绕过优化正常更新。
    • 只允许对隐式事务生效。即要求AUTOCOMMIT为ON,并且不在BEGIN,COMMIT显示开启的事务中使用。否则将绕过优化正常更新。
    • 需要使用HOTSPOT显式标记热点行更新事务,或者将rds_hotspot_auto_detection_threshold设置为非0,开启热点行更新自动识别功能。否则将绕过优化正常更新。rds_hotspot_auto_detection_threshold的详细用法请见参数说明。
    • 只对RC级别生效。数据库处于其他隔离级别时将绕过优化正常更新。
    • 无法在stored function, trigger以及event中使用,否则将对客户端报如下错误:
      HOTSPOT hints can not be used in stored function, trigger or event
  • 行为变更: 一个hotspot事务组内,除了执行失败或者在更新阶段killed的事务外,其他事务被按批次集中提交,集中记录redo log和undo log,只能集中提交或者回滚,无法单独回滚。每个批次提交的事务个数为几十到几百个不等。
support.huaweicloud.com/usermanual-gaussdbformysql/gaussdbformysql_05_0346.html