云数据库 GAUSSDB-平台和客户端兼容性:auto_increment_cache

时间:2024-11-02 18:49:49

auto_increment_cache

参数说明:对自动增长列批量插入或导入触发自增时,预留自增缓存值的个数。预留自增值时刷新自增计数器为自增缓存值的最大值,缓存值使用完毕之前,自增计数器值不变,触发自增使用缓存的值。

  • 预留的缓存值仅在语句内有效,若预留的自增缓存值没有全部被使用,后续插入语句基于自增计数器触发自增,会出现表中自动增长列的值不连续的情况。
  • 并行导入或插入自动增长列触发自增时,每个并行线程预留的缓存值也只在其线程中使用,未完全使用完毕的话,也会出现表中自动增长列的值不连续的情况。
  • 对已有数据的表添加自动增长列或修改某列为自动增长列时,已有数据触发自增,预留自增缓存值也受此参数影响。
  • 此参数不影响本地临时表中的自动增长列。
  • 仅在b_format_version='5.7'且b_format_dev_version='s2'时生效。

默认值:0

参数类型:整型

参数单位:

取值范围:0 ~ INT_MAX

  • 参数值为0时,自动预留自增缓存值。
    • 第一次触发自增时,若已知即将插入自动增长列的行数,预留已知数量的值。

      例如:“INSERT INTO table SELECT ...”和COPY FROM触发自增值无法获取即将插入的行数。ALTER TABLE命令表数据重写时,若触发自增,使用统计信息中的reltuples作为即将预留的行数。 “INSERT INTO table VALUES(...),(...),...”由于要分布到不同DN,在某些执行计划中,DN获取不到即将插入的行数。

    • 若行数未知,每次预留2^n个值,例如,第一次自增预留1个值,第二次自增预留2个值,第三次预留4个值,第四次预留8个值,以此类推,若预留值个数超过65535,预留65535个值。
  • 参数值不为0时,预留缓存值的数量为参数值。
    • 第一次触发自增时,若已知即将插入自动增长列的行数,预留已知数量的值。
    • 若行数未知,每次预留auto_increment_cache数量的自增值。

默认值:0

设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

设置建议:推荐使用默认值,若默认情况产生自增值不连续的情况,可以根据用户即将批量插入数据量调整参数值。参数值越大,批量插入性能越优,也更可能产生不连续的自增值。

support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-1702.html