更新时间:2025-06-27 GMT+08:00
分享

其它选项

enable_default_ustore_table

参数说明:指定是否默认使用Ustore存储引擎。仅当enable_ustore参数开启时,该参数设置有效。该参数为on时,创建的表默认都为Ustore表;该参数为off时,创建的表默认都为Astore表。该参数可在PDB级别设置。升级场景下该参数的默认值会优先保证兼容性,即升级后的默认值与老版本的取值一致。

参数类型:布尔型

参数单位:

取值范围:
  • on:表示默认使用Ustore存储引擎。
  • off:表示默认不使用Ustore存储引擎。

默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:需要特别注意的是,使用Ustore表时,必须要开启track_countstrack_activities参数,否则会引起空间膨胀。

enable_ustore

参数说明:指定是否开启Ustore存储引擎,该参数为on时,支持创建Ustore表。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示开启Ustore存储引擎。
  • off:表示不开启Ustore存储引擎。

默认值:on

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

设置建议:用于USTORE的支持版本控制,不建议修改。

设置不当的风险与影响:需要特别注意的是,使用Ustore表时,必须要开启track_countstrack_activities参数,否则会引起空间膨胀。

enable_segment_datafile_preallocate

参数说明:指定是否开启段页式文件扩展时立即分配磁盘空间模式。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示开启立即分配磁盘空间模式,文件扩展时优先使用fallocate立即分配磁盘空间,如果系统不支持fallocate,则使用逐字节写零方式申请磁盘空间。
  • off:表示不开启立即分配磁盘空间模式,文件扩展时不立即分配磁盘空间,文件以空洞方式增长。

默认值:on

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

consistency_check_module

参数说明:用于设置需要进行一致性校验的模块。

参数类型:字符串

参数单位:

默认值:'off(ALL)'。即默认关闭所有模块的校验。

取值范围:模块在开启状态(on)下会进行一致性校验,在关闭状态(off)下不会进行校验,可由SHOW consistency_check_module查看:

ALL,on(),off(INDEX)

当前支持校验的模块只有INDEX模块,INDEX模块的校验是指在Astore表B-Tree的索引扫描IndexScan的过程中,会校验索引元组与堆表元组的一致性。

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

  1. 首先,可以通过SHOW consistency_check_module来查看哪些模块是支持校验的。当前支持校验模块的输出结果如下所示:
    1
    2
    3
    4
    5
    gaussdb=# show consistency_check_module;
     consistency_check_module 
    --------------------------
     ALL,on(),off(INDEX)
    (1 row)
    
  2. 支持可校验的模块使用大写来标识,特殊标识ALL用于对所有模块进行设置。可以使用on/off来控制是否进行校验。比如设置校验索引与堆表的一致性校验可使用如下命令:
    1
    2
    3
    4
    5
    6
    7
    gaussdb=# set consistency_check_module='on(INDEX)';
    SET
    gaussdb=# show consistency_check_module;
     consistency_check_module 
    --------------------------
     ALL,on(INDEX),off()
    (1 row)
    

    可以看到模块INDEX的校验被打开。

  3. ALL标识相当于一个快捷操作,即对所有模块的校验进行开启或关闭。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    gaussdb=# set consistency_check_module='off(ALL)';
    SET
    gaussdb=# show consistency_check_module;
     consistency_check_module 
    --------------------------
     ALL,on(),off(INDEX)
    (1 row)
    
    gaussdb=# set consistency_check_module='on(ALL)';
    SET
    gaussdb=# show consistency_check_module;
     consistency_check_module 
    --------------------------
     ALL,on(INDEX),off()
    (1 row)
    

设置建议:根据需要开启对应模块的校验。

设置不当的风险与影响:开启时会在一些SQL的执行流程中进行一致性校验操作,会有额外的耗时或性能影响,请谨慎使用。

reserve_space_for_nullable_atts

参数说明:指定是否为Ustore表的可空属性预留空间。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示为Ustore表的可空属性预留空间。
  • off:表示不为Ustore表的可空属性预留空间。

默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

block_size

参数说明:报告当前数据库所使用的块大小。

参数类型:整型

参数单位:

取值范围:当前有效值仅有8192。

默认值:8192

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

segment_size

参数说明:报告当前数据库所使用的段文件大小。

参数类型:整型

参数单位8kB

取值范围:当前有效值仅有131072。

默认值:131072(即1GB)

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

max_index_keys

参数说明:报告当前数据库能够支持的索引键值的最大数目。

参数类型:整型

参数单位:

取值范围:当前有效值仅有32。

默认值:32

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:无。

integer_datetimes

参数说明:报告是否支持64位整数形式的日期和时间格式。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示支持64位整数形式的日期和时间格式。
  • off:表示不支持64位整数形式的日期和时间格式。

默认值:on

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

lc_collate

参数说明:报告当前数据库的字符串排序规则区域设置。

参数类型:字符串

参数单位:

取值范围:字符串

默认值:依赖于数据库安装部署时的配置。

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

lc_ctype

参数说明:报告当前数据库中字符分类和大小写转换的区域设置。如:哪些字符属于哪些字母,它对应的大写形式是什么。

参数类型:字符串

参数单位:

取值范围:字符串

默认值:依赖于数据库安装部署时的配置。

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

max_identifier_length

参数说明:报告当前系统允许的标识符最大长度。

参数类型:整型

参数单位:

取值范围:当前有效值仅有63。

默认值:63

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

server_encoding

参数说明:报告当前数据库的服务端编码字符集。

默认情况下,gs_initdb会根据创建数据库时的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。

参数类型:字符串

参数单位:

取值范围:字符串

默认值:在创建数据库的时候由系统环境决定。

设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

设置建议:该参数不允许用户进行设置,只能查看。

设置不当的风险与影响:

enable_upgrade_merge_lock_mode

参数说明:当该参数设置为on时,通过提升deltamerge内部实现的锁级别,避免和update/delete并发操作导致的报错。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:提升deltamerge内部实现的锁级别,并发执行deltamerge和update/delete操作时,一个操作先执行,另一个操作被阻塞,在前一个操作完成后,后一个操作再执行。
  • off:在对表的delta table的同一行并发执行deltamerge和update/delete操作时,后一个对同一行数据更新的操作会报错退出。

默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

basebackup_timeout

参数说明:备份传输完成后连接无读写的超时时间。该参数可在PDB级别设置。

通过gs_basebackup工具作传输时,如果指定较高压缩率,可能在传输表空间完成后超时(客户端需要压缩传输数据)。

参数类型:整型

参数单位:s(秒)

取值范围:0 ~ 2147483647,其中0表示禁用该功能。

默认值:600。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。例如,不带单位取值600,表示basebackup_timeout为600s;带单位取值10min,表示basebackup_timeout为10min。取值如果要带单位,必须为s、min、h、d。

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

datanode_heartbeat_interval

参数说明设置心跳线程间发送心跳消息的时间间隔。

参数类型:整型

参数单位:ms(毫秒)

取值范围1000 ~ 60000

默认值1000(即1s)

设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如,不带单位取值1000,表示datanode_heartbeat_interval为1000ms;带单位取值1s,表示datanode_heartbeat_interval为1s。取值如果要带单位,必须为ms、s、min、h、d。

设置建议:建议取值不超过wal_receiver_timeout/2。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

dfs_partition_directory_length

参数说明:在HDFS文件系统上,构造HDFS VALUE分区表的分区目录时,目录名长度的上限值。

参数类型:整型

参数单位:

取值范围:92 ~ 7999

默认值:512

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

max_concurrent_autonomous_transactions

参数说明:自治事务最大连接数,即同一时间自治事务执行的最大并发数。当设置为0时,将无法执行自治事务。

参数类型:整型

参数单位:

取值范围:0 ~ 10000,理论最大值为10000,实际最大值为动态值,计算公式为“262143 - job_queue_processes - autovacuum_max_workers - max_inner_tool_connections - max_connections - AUXILIARY_BACKENDS - AV_LAUNCHER_PROCS”。其中,job_queue_processesautovacuum_max_workersmax_inner_tool_connectionsmax_connections的值取决于对应GUC参数的设置;AUXILIARY_BACKENDS为预留辅助线程数,固定为20;AV_LAUNCHER_PROCS为预留autovacuum的launcher线程数,固定为2。

默认值:200(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存);150(96核CPU/768G内存);120(80核CPU/640G内存);100(64核CPU/512G内存);80(60核CPU/480G内存);40(32核CPU/256G内存);20(16核CPU/128G内存);10(8核CPU/64G内存,4核CPU/32G内存,4核CPU/16G内存)。

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

设置建议:根据实际业务需要和硬件配置设置此参数,建议不超过max_connections的1/10。若仅调大此参数,未同比例调整内存参数,业务压力大时,容易出现内存不足,报错提示“memory is temporarily unavailable”。

设置不当的风险与影响:若升级过程中涉及此参数范围变更,并且在commit前修改了此参数,则如果执行升级回滚,需要将此参数调整至升级前允许的范围,否则可能导致数据库无法启动。

enable_seqscan_fusion

参数说明:控制是否打开SeqScan优化。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示打开SeqScan优化。
  • off:表示关闭SeqScan优化。

默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

该参数只能优化EXPLAIN ANALYZE语句的seqscan算子的执行时间。

cluster_run_mode

参数说明双数据库实例容灾场景标识DN节点属于主数据库实例还是备数据库实例。单数据库实例使用默认值。

参数类型:枚举类型

参数单位:

取值范围

  • cluster_primary:表示节点是主数据库实例的节点。
  • cluster_standby:表示节点是备数据库实例的节点。

默认值cluster_primary

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

设置建议:标记灾备数据库实例使用的参数,不建议客户设置。

设置不当的风险与影响:修改后可能导致灾备数据库实例异常。

acceleration_with_compute_pool

参数说明:在查询包含OBS时,通过该参数决定查询是否通过计算资源池进行加速。(由于规格变更,当前版本已经不再支持本特性,请不要使用)

参数类型:布尔型

参数单位:

取值范围:

  • on:表示包含有OBS的查询在计算资源池可用时,会根据代价评估决定是否通过计算资源池对查询加速。
  • off:表示任何查询都不会通过计算资源池进行加速。

默认值:off

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

max_resource_package

参数说明:云上环境中,加速数据库实例每个DN可同时运行任务的线程数的上限。

参数类型:整型

参数单位:

取值范围:0 ~ 2147483647

默认值:0

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

enable_gpi_auto_update

参数说明:控制在分区DDL命令中是否默认更新Global索引。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示默认更新Global索引,此时无论分区DDL带不带UPDATE GLOBAL INDEX子句,都会更新Global索引。
  • off:表示默认不更新Global索引,此时只有当分区DDL带UPDATE GLOBAL INDEX子句时,才会更新Global索引。

默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:根据业务需要进行设置。

设置不当的风险与影响:设置为off,当分区DDL未带UPDATE GLOBAL INDEX子句时,会使Global索引不可用。

enable_gpi_fast_prune

参数说明:控制Ustore表的全局分区索引在DML过程中是否清理之前DDL操作产生的垃圾元组。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示清理,即除了AutoVacuum线程会清理DDL产生的垃圾元组,在DML过程中如果索引页面空间不够,也会触发DDL产生的垃圾元组的清理。
  • off:表示不清理,即只有AutoVacuum线程会清理DDL产生的垃圾元组。

默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:根据业务需要进行设置。如果业务有分区表和全局分区索引,且存在比较多的DDL操作和DML操作,则建议进行开启。如果业务的分区表没有全局分区索引或者没有分区表的DDL操作,则建议进行关闭。

设置不当的风险与影响:设置为off,即只有AutoVacuum线程会清理DDL产生的垃圾元组,则GPI索引空间可能会发生膨胀。

enable_partition_autoextend_retry

参数说明:分区表自动扩展新增分区默认采用自治事务。该参数设置为on后,自治事务新增分区出现异常时,会重试一次同事务新增分区的逻辑。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示分区表采用自治事务自动扩展新增分区出现异常后,会重试一次同事务新增分区。
  • off:表示分区表采用自治事务自动扩展新增分区出现异常后,直接抛出异常。

默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:设置为off,分区表采用自治事务自动扩展新增分区出现异常后,直接抛出异常。

enable_gsplsql_execopt

参数说明:控制是否优化存储过程函数的执行。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示在存储过程初始化时分配并记录运行过程中不改变的信息,避免执行过程中无效的重复调用。
  • off:表示使用默认调用逻辑,每次循环都重新初始化信息。

默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

dynamic_procedure_cache_count

参数说明:用于控制存储过程执行期间可以缓存动态语句的最大条数,缓存数达到最大条数后不优化后续语句。多租场景下,该参数可在PDB级别设置。

参数类型:整型

参数单位:

取值范围:0 ~ 1024,设置为0时表示不缓存。

默认值:128。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

multi_insert_min_rows

参数说明:限制使用批量插入的最小预估行数。可通过explain (verbose on) 观察执行计划是否包含“Batch Insert”,判断是否使用了批量插入。该参数可在PDB级别设置。

参数类型:整型

参数单位:

取值范围:-1 ~ 2147483647,-1表示不使用批量插入,大于等于0时表示预估插入行数>=multi_insert_min_rows时使用批量插入,会针对insert select语句,使用批量插入提升性能。

默认值:1000。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值或者设置为1000以上,插入数据行数较小时使用批量插入可能导致插入性能劣化。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

  • 规格

    默认配置下,astore表使用批量插入可以提升50%左右,ustore表使用批量插入可以提升60%左右。

  • 约束
    除了multi_insert_min_rows参数约束外,使用批量插入还有以下约束:
    1. 不支持insert select之外的语句。
    2. 不支持包含before和instead触发器的表,因为可能改变要插入的数据。
    3. 不支持sql包含volatile函数,因为volatile函数每次执行都会开启一个新事务,而使用batch insert批量成功的特性使其拿到的快照可能与普通insert不同。
    4. 不支持sql包含returning子句。
    5. 不支持upsert子句。
    6. 不支持unlogged表、临时表和全局临时表,使用批量插入反而可能性能劣化。
    7. 仅在b_format_version='5.7'和b_format_dev_version='s2'时,支持包含自增列(auto increment)的表。
示例:
-- 创建表和数据
gaussdb=# CREATE TABLE t(id int, c1 varchar(20), c2 varchar(40), c3 varchar(50)) WITH (storage_type=astore);
gaussdb=# CREATE TABLE t_tmp(id int, c1 varchar(20), c2 varchar(40), c3 varchar(50))  WITH (storage_type=astore);
gaussdb=# INSERT INTO t_tmp VALUES (generate_series(1, 1000), '1111111111111111111', '222222222222222222222', '333333333333333333333333333333333');
analyze t_tmp;

-- 插入1000行数据,循环1000次,使用批量插入1.2s, 不使用批量插入2.68s, 使用批量插入提升性能50%+
gaussdb=# SET multi_insert_min_rows=-1;
gaussdb=# DECLARE
	start_time bigint;
	end_time bigint;
BEGIN
	start_time := dbe_utility.get_time();
	for i in 1 .. 1000 loop
		insert into t select * from t_tmp;
	end loop;
	end_time := dbe_utility.get_time();
	dbe_output.print_line('耗时:' ||(end_time - start_time)/100);
END;
/
耗时:2.68

gaussdb=# SET multi_insert_min_rows=0;
gaussdb=# DECLARE
	start_time bigint;
	end_time bigint;
BEGIN
	start_time := dbe_utility.get_time();
	for i in 1 .. 1000 loop
		insert into t select * from t_tmp;
	end loop;
	end_time := dbe_utility.get_time();
	dbe_output.print_line('耗时:' ||(end_time - start_time)/100);
END;
/
耗时:1.2

enable_force_smp

参数说明:控制是否强制开启SMP计划。参数开启后,代价模型默认拉起stream线程的代价为空,当设置并行度并且算子支持并行时强制选择并行路径。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示强制开启SMP计划。
  • off:表示不强制开启SMP计划。

默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。

  • 该参数只对支持SMP的算子有效,具体请联系管理员。
  • 另外,使用强制开启SMP还存在以下约束:
    • SMP特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,合理设置并行度来较好地提升性能。
    • 如果在不合适的场景下(如数据量较少),或资源不足的情况下,可能引起性能的劣化。
    • SMP非适用场景不支持此参数。

enable_partrouting_optimization

参数说明:控制是否支持分区表插入优化。该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示支持分区表插入优化,针对INSERT、SELECT语句,当SELECT包含常量分区键时,INSERT只需要做一次分区路由,提升性能。
  • off:表示不支持分区表插入优化,插入每一条数据前都需要做一次分区路由去确定插入哪一张分区表。

默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:如果关闭该参数,部分插入分区表的场景会没有该参数带来的性能优化效果,无其他影响。

分区表插入优化约束:
  • 只支持INSERT、SELECT语句。
  • INSERT INTO ta SELECT FROM tb中,插入a表中所有分区键的值,对应SELECT结果集中的列值必须是常量(可以不存在该列,因为默认值也是恒定的)。
    • INSERT INTO ta SELECT c,d FROM b WHERE tb.c='1'或SELECT '1' AS c, d FROM tb则可以判断结果列tb.c为常量。
    • INSERT INTO ta SELECT c,d FROM b WHERE tb.c=func('1'); 如果func()不是volatile函数,也不是包含非常量参数的stable/immutable函数,则可以判断tb.c为常量。
    • 如果列值为聚合函数的返回值,如:INSERT INTO ta SELECT count(c),d FROM b WHERE tb.c='1' GROUP BY c, d; 不能判断count(c)为常量。
  • 不支持UPSERT子句。
  • 不支持包含before和instead触发器的表,因为可能改变要插入的数据。

enable_unique_checking_of_unusable_index

参数说明:控制当表中存在UNUSABLE的唯一索引时,插入和更新操作是否需要阻塞。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示当表中存在UNUSABLE的唯一索引时,INSERT语句和涉及到索引的UPDATE语句会报错,提示先处理UNUSABLE的唯一索引。
  • off:表示当表中存在UNUSABLE的唯一索引时,INSERT语句和涉及到索引的UPDATE语句不会报错。

默认值:off

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

设置建议:根据业务需要进行设置,推荐设置为on。

设置不当的风险与影响:如果打开该参数,为了保证唯一性约束,业务可能会存在大量报错;如果关闭该参数,会导致表中插入唯一索引列的重复数据,导致该索引无法直接重建。

该参数打开时:
  • 对于astore表,更新非UNUSABLE索引的索引列时也会报错,因为会产生新的元组。
  • 对于ustore非分区表,更新非UNUSABLE索引的索引列时不会报错;如果是非原地更新,更新非UNUSABLE索引的索引列时也会报错。
  • 对于ustore分区表,UNUSABLE的唯一索引是全局索引时,更新分区键后若新数据与老数据不在同一分区,也会报错,因为会产生新的元组。
  • 对于ustore分区表,UNUSABLE的唯一索引是包含分区键的LOCAL索引时,更新分区键也会报错。

相关文档