GBase 8a集群参数列表

本文是全部能整理出的参数列表,其中常用的重要参数,已经单独整理到 GBase 8a 参数文章汇总 里,并且提供了使用样例。

变量名字说明
_gbase_add_months_mode0=日期尽量与原始日期的相同,及时是最后一天
1=如果原始日期是最后一天,那将返回下个月的最后一天。(Oracle兼容模式)
_gbase_adjust_complex_scan_weight控制是否允许调整复杂单表条件代价评估值,调整主要包括两方面:
1、IN运算、Like运算,String类型列、float类型列适当增加代价评估值
2、适当增加多列表达式代价评估值,例如t.a+t.b>0代价大约t.a>0
参数取值
0:禁止调整
1:允许调整
_gbase_autoextend_mode预租的模式:
0:使用directIO的方式占用磁盘
1:使用fallocate方式占用磁盘(仅支持XFS,EXT3,EXT4文件系统)
使用directIO的方式在XFS文件系统上,对于gbloader、DML写入操作会导致双倍的磁盘IO,导致性能降低;
而使用fallocate函数可以避免磁盘IO带来的写入性能的影响,没有使用预租一样的效果。
_gbase_bsi_check_disable是否在saveDC时检查BSI的store_min和local_min是否相等。
0:检查, 默认
1:不检查
_gbase_cache_drop_delay_time如果释放掉的DC不足设定的参数值,再次执行drop_cold最小时间间隔(单位秒)。 不建议太小,避免频繁drop。
建议10, 如果效果不佳,可以改成15
_gbase_cache_drop_hot_data热数据也参与回收。
_gbase_cache_drop_unlock_cell_count一次释放unlock状态的DC数量   默认值: 1000
_gbase_caching_level是否启用datacache,缺省为打开
_gbase_check_password_format是否打开密码格式检查功能。已作废或弃用。
_gbase_connect_by_support_table_with_deleted_recordsconnect by 要求必须是复制表,而且数据不能有删除的。这个参数强制允许有删除的数据。
_gbase_connect_retry_countselect into server内部调用gbase_inner_connect连接目的server失败时重试的次数,默认为3(即如果失败了,还会再重试3次)
_gbase_cpu_task_number定制:不需要在手册中进行说明
_gbase_cpu_uplimit定制:不需要在手册中进行说明
_gbase_crash_dump_timeoutgbased处理segfault的超时时间。如果超过了,则强制推出。目的时为了避免处理segfault信号思索,导致gbased的hang住现象。
默认 60s
_gbase_date_format_strict日期的严格模式
1:打开,不合法的会变成NULL
0: 关闭,不合法的【可能】变成0000-00-00形式。
_gbase_date_func_type对时间做函数计算后,是返回datetime类型还是String类型。
1:datetime 类型 默认。 注意包含了时分秒
0:String 类型, 纯日期将不包含时分秒
adddate('2020-01-01',interval 1 year)
1:返回 2021-01-01 00:00:00
0:返回 2020-01-01
_gbase_date_function_mode日期直接加减的功能模式
_gbase_dc_block_size_limit用于设置datacell中数据分块限度。单位是byte. 只适用于varchar和text数据类型。
Upper limit of datablock(subdatapack) in byte size---only for varchar or text data type.
_gbase_dc_sync_size单位:字节,当列数据文件在 Buffer 中未刷出的 DC 大小超过指定值时,执行同步写 I/O 操作。此参数默认值为 1TB,此时 I/O 操作将由系统周期回写机制完成。此参数最小值为 0,表示每次受控 SQL 都调用同步 I/O 操作。
一般配合资源管理的磁盘写入控制使用  max_disk_writeio。
_gbase_dc_window_size控制一个虚拟列上可以同时lock的DC数量。
相当于一个虚拟列上的DCcache,用于优化热数据场景下并发或并行时LockDC的锁开销,提升性能
_gbase_debug_internal内部调试参数,掩码形式
0:关闭
1:debugI/O,I/O层出错时,有可能将错误信息及调用栈输出到system.log
_gbase_delete_filter_compressed控制在存储Filter时,是否使用压缩。这个参数默认为0,即不使用压缩,设为1后使用压缩
_gbase_disable_condition_reorder是否禁用对查询条件执行顺序的自动评估排序,如果配置,则数据库不会改变查询条件的执行顺序,直接按SQL书写顺序执行。按掩码方式配制:
0(默认):不生效;
1:禁用对scan条件的排序;
2:禁用对join条件的排序;
3:同时禁用对scan和join条件的排序;
_gbase_enable_hash_index_join是否利用哈希索引进行hashjoin(1为ON,0为OFF)
即使此选项为ON,也会根据数据特性决定是否使用哈希索引,当预估join条件中无哈希索引的列的取值命中带哈希索引列中的哈希桶个数过多时,不使用hashindexjoin模式
_gbase_enable_hashtree用于设置是否在HashJoin中使用HashTree算法
0(default):use normal hash,1:use hash tree
_gbase_enable_memleak_check开启内存泄漏检查.
1: 打开 默认
0:关闭
_gbase_enable_read_priority用于设置读操作的优先级高于写操作
1:读优先,默认
0: 相同
_gbase_enable_system_heap开启systemheap管理自有堆内存
_gbase_express_table_limit表对象缓冲个数,包括元数据,结构等,BSI等。
_gbase_hybrid_store_group这个参数用于设置是否使用行存数据。
如果这个参数设置为 0,不使用行存数据。如果这个参数设置为 1,使用行
存数据(server 自动判断是否使用)。如果这个参数设置为 2,强制使用行存
数据(有行存数据时则一定使用)
该参数的默认值是 1。
_gbase_in_subquery_result_threshold限制in子查询去重后最大允许的记录数0:不限制大于最大值报错
_gbase_inmem_log_source是否生成development log,该log用于开发调试使用,不对外开放,缺省关闭
_gbase_insert_malloc_size_limitInsert select和Insert values操作字符串类型内部中间数据结构申请内存方式控制参数.
如果字符串类型定义长度小于参数设置字节数,则按照定义长度整DC申请一次,否则每条申请一次内存(性能差)
_gbase_io_size这个参数是为了优化预租模式下,覆盖写入的性能问题。启用预租模式的表在加载、DML操作时会有覆盖写入,根据操作系统的文件系统块大小调整这个参数会有一定得优化IO作用。
设置成大于等于系统的IO blocksize,如果系统的blocksize超出了我们的最大值,设置成最大值即可
_gbase_memory_algorithm自有堆内存管理算法
_gbase_memory_stack_number记录自有堆内存泄漏堆栈层数
0关闭(默认),最大值128
_gbase_multi_pass_hash_join控制是否使用multi_pass_hash_join:
0:不使用;
1(默认):启用,由数据库自动评估是否使用该优化;
_gbase_net_alive_timeout不确定
_gbase_one_pass_hash_group控制是否使用one_pass_hash_group:
0:不使用
1:(默认)启用,由数据库自动评估是否使用该优化;
_gbase_one_pass_hash_join控制是否使用one_pass_hash_join:
0:(默认)不使用
1:启用,由数据库自动评估是否使用该优化;
_gbase_one_pass_union控制集合算子并行优化的开关。
0:关闭;1:开启;2:强制并行(用于调试);3:强制串行(用于调试)
_gbase_optimizer_having控制having优化的开关,0:关闭1:开启
_gbase_optimizer_in_subselectin子查询优化开关(可将in子查询优化为exists相关子查询)。bool型开关量,缺省为1(即打开优化)
_gbase_optimizer_multi_dim_projection是否开启“多维度投影优化”
0:不使用;
1(默认):启用;
_gbase_optimizer_subselect_materialize0:disable this optimize,1(default):use optimize,remove fields those not used by outer select_lex from derived table 
_gbase_optimizer_substr_to_like0(default):disable this optimize,
1:use optimize,transform substr to like
_gbase_parallel_aggr_mode0:automatice valuation(default),
1:splits data by hash,
2:splits data by round-robin
_gbase_parallel_group_use_expression并行group计算hash分组时是否强制使用表达式列
0(默认):不生效,自动评估是否使用表达式计算hash分组;
1:强制使用表达式计算hash分组;
_gbase_parallel_insertselect_mode选择insertselect并行方式
0自动选择
1列间并行
2列内并行
_gbase_parallel_load_dcbool变量,控制是否启用存储层的并行IO(LoadDC),0表示关闭,1表示启用
_gbase_parallel_mtable0:disable materialized table parallel,
1:enable materialized table parallel(default)
_gbase_parallel_read_data控制并行线程是否从不同的位置处理数据,以达到并行读数据的效果
0:关闭;
1:开启;
_gbase_parallel_sort_limitThe min rows of using parallel,default 100000
_gbase_query_path对于Express不支持的查询是否允许走标准引擎执行,缺省值为0,表示不允许。
当查询通道打开时,对于EXPRESS引擎不能执行的查询任务,系统将自动转给上层的其它数据库引擎来继续执行,这使得EXPRESS不支持的SQL语句,在GBase8a中仍然可以执行,但在执行效率上,可能会引发性能问题
_gbase_release_memory_interval_cnt轮询内存使用状态间隔
_gbase_rep_check_dc_ackGNS工作时是否进行逐个DC的ack检查
_gbase_result_threshold限制物化结果(中间结果和最终结果)最大允许的记录数0:不限制大于最大值报错
_gbase_segment_sizeMaximumsizeofdatafiles[10M-2G].
_gbase_select_into_server_vio_queue在执行selectintoserver的时候是否使用共享socket
_gbase_session_memory_stat开启全局内存使用情况实时统计功能
_gbase_sis_check_consistency在intoserver过程中是否对TableInfo及数据某些数值进行一致性检查
_gbase_skip_memcheckIfskipmemorycheckforexpressengine.Defaultno
_gbase_sql_trace_file_modeIfuseaglobalsharedexpresstracefile.1:shared,0:notshared
_gbase_storage_flush_interval统计用户当前磁盘配额使用情况的刷新频率,单位秒。
_gbase_transaction_disable作用是在打开新事务的相关参数时(配置文件),在某些session中不使用新事务的相关逻辑.
默认值:0,按照配置文件中的新事务的设置执行。
1不使用新事务模式(即使在配置文件中配置了新事务的参数)
_gbase_update_oneformanypermitofupdateonetomulti.
_gbase_update_save_dc_buffergnode参数。多线程批量update中,update线程如果比save线程快,则update线程需要等待。这在磁盘IO较重的场景下会出现。这个参数表示已经update成功但还没来得及save的DC数量。取名dc_buffer是因为这些数量的dc是保存在内存中的。设置这个数量可以控制内存的使用量。
_gbase_use_new_mtable是否使用新物化表,1使用,0不使用
_gbase_use_trash_can控制临时文件的删除方式:
0:直接删除;
1(默认):将临时文件移动至特定目录,后台线程负责实际删除动作
_gcluster_order_by_with_fixed_order控制row_number函数中order by对投影列全字段进行排序,保证输出结果稳定
_t_gcluster_distinct_multi_redistdistinct做动态重分布时,使用多个列进行,避免数据非常倾斜的场景。
0 默认值,采用第一个列计算Hash值
1 采用所有列计算Hash值
_t_gcluster_generate_interim_table_policy该参数用于设置集群中间表创建模式。
1(default),使用createtable_tmp_xxxasselect...limit0
方式创建中间表。
0,createtable_tmp_xxx(aint,bint)方式创建中间表。
_t_gcluster_hash_redist_distinct_optimize这个参数为查询计划所使用的参数,现已废弃。
_t_gcluster_hash_redist_olap_optimize这个参数为查询计划所使用的参数,现已废弃
_t_gcluster_hash_redist_primary_suffix该参数用于控制当有分片的state被设置为1时,只要主分片是好的,是否仍然走hash重分布优化。
1(default),insertselect查询的select部分,只要主分片是好的,即使副本分片state为1,仍然走hash重分布优化。
0,insertselect查询的select部分,有分片state为1时,不走hash重分布。
_t_gcluster_hash_redistribute_groupby_on_multiple_expression指定多个列参与hash计算,避免GBase 8a做distinct、group、join时通过指定多列动态Hash重分布避免严重数据倾斜导致的性能问题
GBase 8a做distinct、group和join时避免严重数据倾斜导致的性能问题
_t_gcluster_inner_cond这个参数为控制集群优化器的参数,为了修复某现场笛卡尔积对集群不良影响的问题,新增了一处代码,为了防止新增代码带来的风险,因此
加上一个控制开关,如果现场发现问题,可以用该参数关闭新增代码的影响(恢复到初始状态)。
参数=0关闭;
参数=1打开;
_t_gcluster_limit_optimize这个参数为查询计划所使用的参数,现已废弃
_t_gcluster_nocopy_extra_step_for_dml该参数用于控制insertselect的源和目的包含nocopy表时,是否为nocopy产生额外的拉表动作。
1(default),为nocopy表产生额外拉表动作。
0,不产生额外的拉表动作。
_t_gcluster_optimize_chain_condition该参数用于控制是否进行链式条件优化。
Select * from t1,t2 where t1.id2=t2.id2 and t1.id2=10;
可以为t2增加一个链式条件t2.id2=10。
开启优化,sql将被优化为select * from t1,t2 where t1.id2=t2.id2 and t1.id2=10 and t2.id2=10;
1(default),开启优化
0,关闭优化。
_t_gcluster_optimize_hash_redistribute_ha该参数用于控制当语句是纯SELECT语句时,能够使用hash重分布优化时,则一定使用,而不考虑节点和表分片的状态。
1(default),纯SELECT查询,不考虑节点和分片状态。
0,需要考虑节点和分片状态。
_t_gcluster_optimize_insert_select_hash_redistribute该参数用于设置insertintohash分布表select非hash分布表时使用hash重分布还是使用拉取复制表方式。
1(default),为目标表准备数据时,使用hash重分布
0,为目标表准备数据时,使用复制表。
_t_gcluster_optimize_use_insert_prepare_step该参数用于设置是否开启物理顺序一致性,避免同一分片在不同节点上出现数据的物理顺序不一致问题。
1(default),开启物理顺序一致性。
0(build11.4仅可取值1),不开启物理顺序一致性。
_t_gcluster_scalar_subquery_exec_mode该参数用于设置集群标量子查询的执行模式。。
0(default),使用标量子查询优化,标量子查询会被计算为一个值,然后代入原查询中计算。
1,对于select子句中的标量子查询,不使用优化,而是以子查询的形态参与查询。
_t_gcluster_shrink_long_alias该参数用于设置是否对集群查询的超长别名进行缩减。
例如用户语句selectcasewhen.....endfromt1;
projection中的表达式如果未指定别名,则会以该表达式的字面作为别名,此时会出现别名长度超过64的情况。如果以此名字为列名创建集群中间表,
则会导致创建中间表失败,因此需要进行别名缩减。
1(default),缩减别名,对于超长别名,构造一个类似_tmp_col_1这样的不冲突的别名。
0,不缩减别名。
_t_gcluster_support_cte支持CTE语法。WithXXXas
_t_gcluster_swap_join_cond_optimize该参数用于设置是否交换join的左右条件。当join条件是varchar=int时,开启本开关,将自动交换为int=varchar。
(本参数已经废弃,即将删除,请不要使用。)
1(default),交换。
0,不交换。
_t_gcluster_union_redist_optimize是否允许不同数据类型(int和decimal类型)union时,自动转化成redist重分布。
0 关闭,拉复制表
1 开启,但不支持将数据从int的hash列转化为decimal类型,拉复制表
2 开启,并且支持将数据类型为int的hash列转化为decimal类型,重分布
_t_gcluster_use_new_join_traverse_optimize该参数用于设置集群是否使用新的JOIN树遍历算法。
(本参数即将废弃,不要使用)
1(default),使用新的改进后的JOIN树遍历算法。
0,使用旧的JOIN树遍历算法。
_t_gcluster_use_new_res_sender该参数用于设置是否使用新的结果集发送器。
来自GNode层的数据格式需要经过gbase层->express层->gbase层转换,然后把结果发送给客户端。可以看到,中间express层转换是不必须的。
1(default),使用新的结果集发送器,结果集直接发送给客户端。
0,数据格式要转到express层,然后再转回gbase层。
_t_gcluster_use_redist_ha_for_insert该参数用于设置当集群不完整时,INSERTSELECT仍然支持hash重分布操作。
1(default),集群不完整时,insertselect查询中,为insert准备数据时,仍然可以走hash重分布。
0,集群不完整时,insertselect将不走hash重分布。
active_resource_plan当前使用中的资源管控计划名字
async_thread_stack集群执行SQL语句,向节点下发语句,进行协程切换时,用来指定协程使用的栈空间大小。单位为KB.当前默认值是124KB, 最小16KB.最大124KB.太小的栈可能会引起栈空间溢出。太大的会浪费内存。
audit_log审计日志开关参数。
audit_log_file审计日志文件形式保存时的路径。
auto_increment_increment打开自增列功能。该功能在V9版本才正式提供。在V8里实际不可用。
auto_increment_offset自增列增量偏移。该功能在V9版本才正式提供。在V8里实际不可用。
autocommit自动提交。
basedir这个参数用于设置 GBase 8a服务的根目录。GBase 8a服务(即节点的gcware
服务)的正确运行,依赖于该参数的正确设置。这个参数的默认值为$GBASE_BASE/server。
该参数的值在安装时已经被正确设置,用户不需要对其进行修改,即可正
常启动节点的 gcware 服务。
bind_address绑定的IP地址, 默认::是全部本地的
caching_sha2_passwordsha256用户密码加密。
0 关闭 默认
1 开启
character_set_client客户端的字符集
character_set_connection设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置
character_set_database数据库某个database的字符集
character_set_filesystem文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的
character_set_results数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式
character_set_server服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要人为定义。
character_set_sort数据库排序的字符集
character_set_system数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式
character_sets_dir字符集安装的目录
collation_connection连接的排序规则
collation_database数据库的排序规则
collation_server服务器的排序规则
connect_timeoutgclusterd服务在响应错误握手之前等待连接数据包的秒数。
datadir这个参数用于设置 GBase 8a 的数据目录位置。
这个参数的默认值为$GBASE_BASE/userdata/$GBASE_SID。
该参数的值在安装时已经被正确设置,用户不需要对其进行修改,即可正
常启动节点的 gcware 服务。
date_format默认的日期格式
datetime_format默认的日期时间格式
default_week_format默认的星期模式
event_scheduler这个参数用于打开/关闭事件调度程序。
当参数为 0 时,关闭事件调度程序;当参数为 1 时,打开事件调度程度。
在 GBase 8a 中,需要对系统表中的数据进行定期整理,且整理功能由事件调度程序启动,因此该参数的值必须设置为 1,以打开事件调度程序。
如果用户关闭事件调度程序,可能导致数据库系统由于未能及时对系统表
进行整理,造成数据库出现性能问题。
gbase_buffer_distgrby这个参数用于设置数据库做 DISTINCT GROUP 时使用的 BUFFER 大小。
如果用户的SQL操作经常出现DISTINCT操作,则可适当将该参数调大一些。
通常该内存从 LARGE BUFFER 中申请,因此该值应小于 gbase_heap_large
的大小。
系统会根据 gbase_heap_data 的大小,自动计算 gbase_buffer_distgrby
的最小值。如果用户的设置值小于程序计算的最小值,则会忽略该参数的设置值。
该参数的默认值是由系统自动评估计算出来的,不是固定的值。
gbase_buffer_hgrby这个参数用于设置数据库做 GROUP 时使用的 BUFFER 大小。
如果用户的 SQL 操作经常出现 GROUP BY 操作,则可以适当将该参数调大一
些。
通常该内存从 LARGE BUFFER 中申请,因此该值应小于 gbase_heap_large
的大小。
系统会根据 gbase_heap_data 的大小,自动计算 gbase_buffer_hgrby 的最
小值。如果用户的设置值小于程序计算的最小值,则会忽略该参数的设置值。
该参数的默认值是由系统自动评估计算出来的,不是固定的值
gbase_buffer_hj这个参数用于设置数据库做 HASH JOIN 时使用的 BUFFER 大小。
如果用户的 SQL 操作经常出现 HASH JOIN 操作,则可以适当将该参数调大
一些。
通常该内存从 LARGE BUFFER 中申请,因此该值应小于 gbase_heap_large
的大小。
系统会根据 gbase_heap_data 的大小,自动计算 gbase_buffer_hj 的最小
值。如果用户的设置值小于程序计算的最小值,则会忽略该参数的设置值。
该参数的默认值是由系统自动评估计算出来的,不是固定的值。
gbase_buffer_insert这个参数用于设置批量 INSERT 数据时,中间 BUFFER 的大小。
适当减少 COMMIT 的次数,可以加快 INSERT 的速度,但减少 COMMIT 操作,
则需要更大的 gbase_buffer_insert。该参数的设置值与在 INSERT 操作时,一
次 COMMIT 的记录数量及 INSERT 的数据内容相关。
该参数的默认值是 256M。
gbase_buffer_rowset这个参数用于配置缓存 join 中间结果所使用的 BUFFRER 大小。
系统会根据 gbase_heap_data 的大小,自动计算 gbase_buffer_rowset 的
最小值。如果用户的设置值小于程序计算的最小值,则会忽略该参数的设置值。
通常该内存从 LARGE BUFFER 中申请,因此该值应小于 gbase_heap_large
的大小。
该参数的默认值是由系统自动评估计算出来的,不是固定的值。
gbase_buffer_sort这个参数用于设置数据库做 SORT 时使用的 BUFFER 大小。
如果用户的 SQL 操作经常出现 SORT 操作,则可以适当将该参数调大一些。
通常该内存从 LARGE BUFFER 中申请,因此该值应小于 gbase_heap_large
的大小。
系统会根据 gbase_heap_data 的大小,自动计算 gbase_buffer_sort 的最
小值。如用户的设置值小于程序计算的最小值,则会忽略该参数的设置值。
该参数的默认值是由系统自动评估计算出来的,不是固定的值。
gbase_cache_data_dir这个参数用于设置 GBase 8a 运行中,数据库临时目录路径。该目录至少需
要 20G 的空闲空间(依赖于数据库的大小)。
该目录对 GBase 8a 的运行性能影响较大,通常要求该目录被设置在 IO 性
能非常高的磁盘分区中。
在 GBase 8a 中,该参数的默认值为
$GBASE_BASE/tmpdata/cache_$GBASE_SID,用户可以根据实际的硬件情况,修
改该参数。
gbase_capture_sql_flag记录所有执行过的select语句的功能0是关闭,1是开启
gbase_compression_num_method这个参数用于控制数字型(例如:TINYINT,INT,BIGINT,DOUBLE,DECIMAL...)
数据的压缩方式。
可选的压缩方式有:
0 - 轻量级压缩
1 - PPM 压缩(压缩速度快,解压速度慢)
5 - RAPIDZ 压缩(相对于 31 算法而言,可以提供更好的数据吞吐能力(IO+
解压),适用于对性能要求较高的用户场合。)
该参数的默认值是 0。
gbase_compression_str_method这个参数用于控制字符串类型(如:VARCHAR,CHAR...)的压缩方式。可
选的压缩方式有:
0 - 轻量级压缩
3 - PPM 压缩(压缩速度快,解压速度慢)
5 - RAPIDZ 压缩(相对于 31 算法而言,可以提供更好的数据吞吐能力(IO+
解压),适用于对性能要求较高的用户场合。)
该参数的默认值是 0,但配置文件配置的默认是5。
gbase_dblink_gateway_ip使用 dblink 功能时,需要连接的 GBase 透明网关的 IP。在 GBase 8a 的配
置文件中,手动加入此参数,并且输入 IP 地址。配置完毕后,保存退出配置文
件,重新启动节点的 gcware 服务。
gbase_dblink_gateway_port使用 dblink 功能时,需要连接的 GBase 透明网关的 Port。在 GBase 8a 的
配置文件中,手动加入此参数,并且输入端口号。配置完毕后,保存退出配置
文件,重新启动节点的 gcware 服务。
gbase_dblink_server_ip使用 dblink 功能时,GBase Server 本身的 IP。在 GBase 8a 的配置文件中,
手动加入此参数,并且输入 IP 地址。配置完毕后,保存退出配置文件,重新启
动节点的 gcware 服务。
gbase_dblink_standby_gateway_ip备用 dblink 网关服务所在主机的 ip 地址。
gbase_dblink_standby_gateway_port备用 dblink 网关服务监听的端口。
可部署两套相同配置的 dblink 网关服务,一主一备,同时都启动在线,当
gcluster 连接主网关失败时将尝试连接备用网关
gbase_decimal_calculation1 打开decimal计算精度强制为20位。0 关闭,则根据字段定义额外补上4位。
gbase_disable_encrypt加密开关。默认为0. 为1时,即使创建了加密语法,仍不加密。
gbase_enable_hdfs_sso该参数为布尔型变量,用于指定是否启用 HDFS 单点登录功能。默认值为 1
或 ON,表示启用 HDFS 单点登录。
默认值 最小值 最大值
1 0 1
gbase_export_directory用于指定是否自动创建与导出文件同名的目录,作为导出文件的目标目录。
该参数支持 hadoop 文件和本地文件的导出,暂不支持 rmt 远程导出方式。
默认值 最小值 最大值
1 0 1
当该参数值为 1 时,以导出本地文件或 Hadoop 文件前,自动创建与文件同
名(不含扩展名)的目录作为导出的目标目录,参数值为 0 时则不创建目录。
gbase_export_truncate_mode集群定长导出功能,,当用户指定数据每列字节长度小于表中数据长度,
且列类型为字符(char、varchar、text)时,导出模块的处理方式。
取值:
0: 截断,不报错也没有警告
1: 截断,并增加 warning
2: 报错
默认值 最小值 最大值
0 0 2
gbase_export_write_timeout参数说明:用于指定导出 HDFS 文件的写入超时时间,如果写入一个数据块
(8M)的时间超过此参数值,加载任务将报错停止。0 表示永不超时。
参数单位:秒
默认值 最小值 最大值
300 0 INT_MAX
gbase_express_log这个参数用于设置是否记录 express.log。
如果这个参数设为 1,则记录日志,日志路径为
$GBASE_BASE/log/$GBASE_SID;如果这个参数设为 0,则不记录日志。
该参数默认值是 1。
gbase_fast_update这个参数用于设置是否使用快速 UPDATE 模式。 如果这个参数设为 1,是内部类似于做了 DELETE+INSERT 操作(适用于更新 该列中较少的数据);如果这个参数设为 0,是重建更新列所有数据(即批量 模式)。 该参数的默认值是 0。
gbase_force_bin_like强制二进制的like判断,避免有中文乱码时,like结果集错误。
gbase_gcluster_node_flag当前节点是不是node节点。
0 不是node
1 是node
gbase_global_variable_persistentA、打开开关
set gbase_global_variable_persistent=1
B、设置需要持久化的参数,需要使用global级别
set global max_allowed_packet=xxx
C、查看gcluster和gnode层的配置文件,是否已经按需要改变,检查其他未设置的值是否还是原值。
gbase_hbase_server_namehbase hive 服务器地址. 【猜测是UP使用】
gbase_hdfs_auth_mode枚举型变量,用于指定 HDFS 认证方式。
simple:使用基本认证
kerberos:使用 Kerberos 认证
与其它枚举型变量相同,参数值支持大写、小写及大小混合形式,支持由首字母开始的一个或多个连续字母的缩写形式,比如以下方式为合法的参数值:
simple, Simple, SIMPLE, kerberos, Kerberos, KERBEROS,
s, sim, simp, k, ker, Kerb
默认值 最小值 最大值
simple 无 无
gbase_hdfs_client_timeout用于指定加载或导出 HDFS 文件时非读写文件操作超时时间,0 表示永不超
时。该参数控制连接到 HDFS、在 HDFS 上创建目录、查询 HDFS 文件大小等非读
写文件操作的超时时间,该参数与 gbase_loader_read_timeout 和
gbase_export_write_timeout 同时起作用。
默认值 最小值 最大值
600 0 INT_MAX
gbase_hdfs_max_retry为应对访问hadoop集群时网络压力过大的异常情况,通过参数控制webhdfs访问超时后的重试次数。
gbase_hdfs_port该参数为整型变量,用于指定 HDFS 服务的连接端口。默认值为 0,表示使
用相应协议下的 Hadoop 默认端口,即:http 协议默认 50070 端口,https 协议
默认 50470 端口,rpc 协议默认 9000 端口。
默认值 最小值 最大值
0 0 65535
gbase_hdfs_token_renew_interval参数说明:该参数为整型变量,用于在 HDFS 单点登录功能中,指定后台自动更新 HDFS 访问 token 的刷新时间间隔。参数单位:秒。
默认值 最小值 最大值
3600 60 UINT_MAX
gbase_high_priority_weightGCluster集群支持多资源组,高级别的权重
gbase high priority weight(80-100) ,default is 80
gbase_hybrid_store控制是否使用行存数据:
0:不使用;
1(默认):server自动判断是否使用;
2:强制使用,有则一定使用;
gbase_hybrid_store_page_size这个参数用于设置行存数据中一个 page 的大小(单位为字节)。
Page 页的划分大小会影响行存储列的查询时间。
gbase_insertselect_parallel_foreverinsert select 各个节点一直本地并行执行。类似hint下发。
gbase_kafka_keytab字符串变量,用于指定 Kerberos 认证中安全主体 keytab 文件名。
与 gbase_hdfs_keytab 完全相同的用法。
gbase_kafka_principal字符串变量,用于指定 Kerberos 认证中安全主体名称。这个参数也用于指
定与该 principal 对应的 keytab 文件名。
与 gbase_hdfs_principal 完全相同的用法。
gbase_krb5cc_tmpdir用于指定 hdfs 加载导出 kerberos 认证的临时信息存储目录。该参数为只
读变量,只能通过单机和集群配置文件配置。
该参数在 gnode 上的默认值是$GBASE_BASE/tmpdata/krb5cc_gbase,在
gcluster 上的默认值是$GCLUSTER_BASE/tmpdata/krb5cc_gcluster。
gbase_loader_buffer_count用于控制加载占用内存数量,新增参数 gbase_loader_buffer_count,用
于指定加载过程中分配的读缓冲内存块数量(单块内存固定大小为 8M)。
默认值 最小值 最大值
16 2 128
参数说明:用于指定加载过程中分配的读缓冲内存块数量,其中单块内存
固定大小为 8M,每个加载任务单个节点占用的读缓冲内存为 8M*gbase_loader_buffer_count。
gbase_loader_check_charset用于设置是否打开字符集检查功能,该参数仅对加载有效,对其他 SQL 无
影响。
默认值 最小值 最大值
0 0 1
gbase_loader_last_task_id获得最后一次加载的任务号taskID,可以通过show方式得到。
gbase_loader_line_length记载一行记录最大允许长度。如超过,该行记录为错误数据。默认4M
gbase_loader_logs_collect用于控制日志汇总功能的开启。ON:表示开启加载错误数据日志汇总功能,
加载过程中实时的将错误数据与溯源信息汇总至加载发启节点。OFF:表示关闭
加载错误数据日志汇总功能,加载遵循现有规则,错误数据日志与溯源信息日
志存在在加载节点。
有效值 默认值 最小值 最大值
1 (ON)、 0 (OFF) 1 (ON) 0 1
gbase_loader_logs_dir用户指定错误数据与溯源日志文件汇总目录。
默认值 最小值 最大值
gcluster:
$GCLUSTER_HOME/log/gcluster/loader_logs/
gbase:
$GBASE_HOME/log/gbase/loader_logs/
无 无
gbase_loader_max_line_length用于设置源文件中一行数据的最大长度,超过此长度,加载任务将报错停
止。单位:字节。
默认值 最小值 最大值
4194304 4194304 9223372036854775807
(LONG_MAX)
gbase_loader_parallel_degree增加独立参数能够通过配置文件设置全局的加载并行度,该参数仅对加载有效,对其他SQL无影响。增加该参数后,设置gbase_parallel_degree参数对加载不再有效
gbase_loader_read_timeout用于指定读取 FTP/HTTP/SFTP 文件的超时时间,如果填充一个数据块(8M)
的时间超过此参数值,加载任务将报错停止。0 表示永不超时。
默认值 最小值 最大值
300 0 UINT_MAX
gbase_loader_wildcard_switch控制是否打开多级目录通配加载功能。
ON:表示开启多级目录通配功能,加载过程中对 SQL 中含有通配符的文件
路径通配展开,获得精确文件路径;
OFF:表示关闭多级目录通配功能,加载遵循现有规则,按 SQL 指定的路径
进行加载。
默认值 最小值 最大值
1(ON) 0(OFF) 1(ON)
gbase_low_priority_weightGCluster集群支持多资源组,低级别组的权重
gbase low priority weight (40 - 60),  default is 40
gbase_max_allowed_level用于设置分级查询中允许的最大level数,即树的最大层数
增加目的:为了兼容oracle生成序列的功能,如:
selectlevelfromdualconnectbylevel<=100;
该sql会产生1到100的序列oracle循序死循环的产生,最终会报资源不足错误退出;
8a由于会不停的往客户端发数据,会触发操作系统的OOM机制,因此不允许死循环的产生,故增加该参数控制最大level数,超过此level会报错
gbase_memory_pct_target这个参数用于设置内存的可用比例(gbased 服务可用内存占机器物理内存
大小的比例)。系统内存 gbase_memory_pct_target 的结果通常作为 Server
启动时和运行时,对于内存上限和下限的检查。
在 GBase 8a 中,这个参数的默认值是 0.8,不建议用户对该参数进行修改。
gbase_mid_priority_weightGCluster集群支持多资源组
gbase middle priority weight (60 -80),  default is 60
gbase_min_priority_weightGCluster集群支持多资源组
gbase min priority weight(20 - 40),  fixed value is 20
gbase_mmap_hugefile_dirGCluster集群支持多资源组
gbase min priority weight(20 - 40),  fixed value is 20
gbase_optimizer_between_join控制是否使用betweenjoin优化,0:关闭;1:开启(默认);2:开启,并且含等值条件的连接也优先使用betweenjoin,如“wheret1.d=t2.dandt1.abetweent2.bandt2.c”
gbase_parallel_degree控制SQL执行的并行度(并行线程数)
gbase_parallel_execution并行开关标志
1: enable parallel execute with multi-thread,
0(default): disable parallel execute
gbase_parallel_max_thread_in_pool用于配置并行执行器线程池中的最大线程个数,默认为系统CPU核数
The number of threads in the thread pool, default(cores)
gbase_parallel_threshold算子并行的数据量阈值。默认为10000,小于此值直接串行。
gbase_send_result_mode用于设置是否使用ResultSender,如果使用则服务在处理一块结果后会马上发给客户端,如果不使用,则服务在处理全部结果后才发送给客户端
gbase_show_ident_case_sensitive统一列名大小写。
0-默认值,列名的输出格式和输入相同,没有转换。
1-列名转为小写输出
2-列名转为大写输出
gbase_show_version是否允许通过select version等方式获得数据库版本。默认1允许。 0不允许,将显示为多个型号*****代替。 只允许通过配置文件进行修改。 同时gc,gn都建议修改。
gbase_skip_trim跳过trim,rtrim,ltrim,前提是需要保证数据的前后没有空格,例如
select * from t1 where trim(a)='aa';
--->优化成
select * from t1 where a='aa';
gbase_sql_trace_level控制expresstracelog输出内容的详细程度,分1、2、3级,3级为最详细
gbase_tcmalloc_aggressive_decommit_threadhold_load_factor积极回收内存阈值,默认为0.9,大于此值回收tcmalloc_freelist持有所有内存
gbase_tcmalloc_balanced_decommit_threadhold_load_factor均衡回收内存阈值.默认为0.6,大于此值,小于gbase_tcmalloc_aggressive_decommit_threadhold_load_factor,采用均衡回收策略,即pageheap_freelist_bytes/app_used_bytes比值控制在一定范围。
gbase_tcmalloc_check_memory_threadhold_rate确认gbased为系统内存使用瓶颈阈值(gbased使用内存/系统物理内存)
默认值为0.6
大于此值,进行适度内存回收
gbase_tcmalloc_freememory_hold_ratio均衡回收内存策略下,pageheap_freelist_bytes/app_used_bytes比值的最大阈值.
大于此值,回收tcmalloc持有的部分内存
gbase_tcmalloc_releasememorytoos_threadhold_rate均衡回收内存策略下,回收内存的最小粒度。
默认值为0.05
回收内存量为:系统物理内存*gbase_tcmalloc_releasememoryToOS_threadhold_rate
gbase_to_number_str2decto_number函数在处理字符串的情况下,如果参数为0(默认)关闭,则转为double类型。;参数为1打开时,转为decimal(65,30)类型。
gbase_truncate_nanosecond控制待加载的dataetime和timestamp类型数据的微秒超过6位是否阶段。
0:不截断,微秒超过位将作为错误数据
1:截断,取前6位入库。
由于timestamp不支持微秒,所以入库后的timestamp不包括微秒。
gbase_tx_log_dir事务日志相关文件所在的目录
gbase_tx_log_flush_time事务日志隔多久(秒)检查一次是否需要同步。
gbase_type_conversion_warn2err1、所有警告转换报错的修改都在此开关的控制之下
2、置位 abort_on_warning 以及提升push_warning的level为error
3、对于没有报警的情况,捕获报警并同时报错
gcluster_adjust_nodes_before_redist该参数用于控制对nodedatamap系统表中不存在的集群节点是否允许执行SQL。在重分布期间需要设置该值为0。该参数的默认值缺省为0。
参数=0允许;
参数=1不允许;
gcluster_allow_sg_lost允许主备分片或85版本里一个safegroup里的节点全部故障。数据库从不完整的数据节点继续查询,忽略结果的正确性。
gcluster_async_connect_timeout异步执行器建立连接时的连接超时参数。如果网络状态非常不好,建议提高该参数。
gcluster_connect_net_read_timeout下发的SQL,最大允许的执行时间长度。本参数是读取返回超时。超时自动kill任务
gcluster_connect_net_write_timeout下发的SQL,最大允许的执行时间长度。本参数是下发命令写入超时。超时自动kill任务
gcluster_count_optimize这个参数用于设置对单表进行count(*)时,不产生中间结果表,gcluster直接计算结果值。该参数的默认值是1。
参数=0:按照产生中间表的方式执行;
参数=1:gcluster直接计算count值。
gcluster_crossjoin_use_hash_distribution这个参数用于设置当JOIN两边都不是hash列时,是否仍强制走hash重分布JOIN。
参数=0:表示关闭,即当JOIN两边都不是hash列时,不使用hash重分布JOIN功能
参数=1:表示开启,即当JOIN两边都不是hash列时,使用hash重分布JOIN功能。
该参数的默认值是1。
gcluster_dblink_direct_data_exchange这个参数用于只针对同构数据源(gcluster)时使用,用来控制拉数据的方式,有两种方式可以选择。该参数的默认值是1。
参数=0:(方式2)网关通过JDBC查询远程的集群,将结果集转换为insertinto……values……的语句,再插入到本地的集群,从而实现数据迁移。
参数=1:(方式1)直接给远程的gcluster发送SELECT……INTOSERVER……的命令来拉数据,从而实现数据迁移。
备注:方式1只针对本地集群节点和远程集群节点之间可以互联的情况,如果他们之间不能进行互联,则只能使用方式2。
gcluster_delayed_group_by_optimize是否针对group开启延迟聚合,默认值0, 不开启。 设置为1开始
延迟聚合,就是不在本地做group后再发送数据,而是直接发送数据到临时表,在临时表做最后的聚合。
该参数对group列不包含hash分布列时才有效。
GBase 8a针对group列唯一值多的延迟聚合优化参数
gcluster_ddl_parallel_execute这个参数用于控制DDL并行或者串行执行。
参数=0:串行执行;
参数=1:并行执行
该参数的默认值是0。
gcluster_dql_statistic_threshold查询SQL的性能监控功能。0=关闭,其它数值为秒数,超过这个秒数的会被记录。information_schema.SELECT_STATISTIC;sys_sqls;
gcluster_empty_result_set_optimize这个参数用于设置是否启用空结果集优化功能。
参数=0禁用。
参数=1启用。如果优化阶段可判断结果集为空,则直接返回,而不需要让执行器进行执行。
该参数的默认值是1。
gcluster_enable_mview物化视图功能,尚未完成发布。
gcluster_enable_serial_load加载受到gcluster_serial_exec_query控制。默认0不受控制。
gcluster_engine_field_maxsize当UP通过引擎查询,获得结果时,单列数据的最大长度。比如从up查询8t引擎数据。
gcluster_extend_ident用来控制是否可以创建中文表名字段、特殊字符的字段。
默认为 0,0 表示不开启,为 1 表示开启。
注:打开 gcluster_extend_ident 参数之后,系统从原来的只能创建字母
数字下划线命名方式,扩展到支持中文和特殊字符,但特殊字符不包括
"'",""","\"," . "四个字符。
例如创建一个带有特殊字符的库,将会报错
create database t't;
gcluster_ha_event_monitor这个参数用于是否控制监听各个gnode的状态,以便控制当前执行SQL来获得该状态。
参数=0禁用监听
参数=1启用监听
该参数的默认值是1。
适用高可用节点状态响应场景:
集群查询过程中,由于一些原因某些节点会出现由Online变为Offline状态,那么对应该节点的查询则必须停止下来,执行器在执行过程中会提供高可用节点状态响应功能,一旦节点状态变为不可用,则通知与之相关的查询,将其停止下来。
gcluster_ha_node_left_event_delay这个参数用于检测节点离开的间隔时间,例如t1时间检测到node离开了,等待了gcluster_ha_node_left_event_delay时间后,检测到node仍然是离开状态,则认为该node是真正离开了。单位是毫秒。
该参数的默认值是30000。
默认值最小值最大值
30000086400000000
gcluster_hash_join_complex_optimize这个参数用于控制是否在子查询和父查询满足hash关系的优化时,当作一个整体部分来执行。
参数=0禁用,满足hash关系的优化时,不当作一个整体部分执行。
参数=1启用,满足hash关系的优化时,当作一个整体部分执行。
该参数的默认值是1。
gcluster_hash_redist_threshold_row当该值不为 0 时,若小表拉表的数据行数大于该值,进行 HASH 重分布 JOIN。
该参数的默认值是 0。
配合 gcluster_hash_redistribute_join_optimizer使用
gcluster_hash_redistribute_groupby_optimize这个参数用于控制是否启用Hash重分布的GROUPBY模式。
参数=0禁用。
参数=1启用。进行分组(groupby)运算之前,将会把临时结果利用哈希算法重分布到各个运算节点,再由各个节点进行分组运算。由于数据在分到
各个节点之前已经做了哈希,因此产生的结果直接汇总即可得到最终结果,不再需要由汇总节点再做一次分组。
该参数的默认值是1。
需要说明的是:当查询包含OLAP函数、ORDERBY、LIMIT时,无法使用本参数进行优化。
gcluster_hash_redistribute_join_optimize是否启用Hash重分布的JOIN模式。默认值是1。
参数=0 拉复制表
参数=1一直使用。在两个分布表进行等值JOIN运算时,
将把其中一个表的数据根据连接条件列的值进行哈希重分布。
然后,利用各个运算节点上重分布后的临时表和另一个进行JOIN运算。
这样,各节点的运算结果直接汇总即可得到最终结果。
这种策略可以免于将其中一个分布表在所有运算节点上拉成复制表,而是每个运算节点只需接收这个表的一部分数据。
参数=2由规则决定:两表的尺寸相差不超过20%时,使用哈希重分布JOIN;否则不使用。
gcluster_insert_singlegrouppart_optimize这个参数用于设置是否把insertintoselect...的数据插入到safegroup单一分片中。
参数=0:不插入到safegroup单一分片中;
参数=1:插入到safegroup单一分片中
该参数的默认值是0。
gcluster_insertselect_use_values_optimize这个参数用于设置是否把insertintoselect…转化成insertintovalues的方式。
参数=0:不转换;
参数=1:转换
该参数的默认值是0。
gcluster_kafka_batch_commit_dml_count该参数用来配置批量提交,单位是 DML 的条数。 在内存够用的情况下,批量提交能大幅提高效率。
gcluster_kafka_consume_batch该参数用来配置一次从 kafka server 取得多少消息。 如果 kakfa 消息以小事务为主,那么可以把这个参数配置大一些,相反则配小一些。
gcluster_kafka_consumer_output_charset_name设置 kafka consumer 发给单机的数据的字符集。缺省为空,适用于 JSON
UTF8,8a UTF8 的配置;设为 UTF8 可以兼容 8a GBK 或 8a UTF8 两种情况。
注:输入的 JSON 必须是 UTF8
gcluster_kafka_data_buf_size设定集群为每个 consumer 最多分配多大 buffer,该 buffer 用于缓存一次
提交包含的 insert 数据(从 update 拆分的 insert 也包含在内)。
注:此参数一般不需要配置,当用户有超大事务的时候,如果 consumer
报错,可以根据错误信息来配置此参数。
默认值 最小值 最大值
1.25GB 0 不限制
gcluster_kafka_ignore_if_table_not_exist如果同步 8a 已经不存在的表的数据时,可以通过参数控制进行丢弃,并记录日志。
默认值为 0,等于 1 时代表同步不存在的表时可以忽略信息写到express.log 中。
gcluster_kafka_loader_max_start_count控制 loader 型 consumer 最多可以启动多少个,超过这个数,start kafka
consumer 命令将报错。
默认值 最小值 最大值
20 1 100
gcluster_kafka_local_queue_size该参数用来配置consumer本地缓存队列的长度,单位是DML的条数。设
计采用本地缓存队列是为了平衡从 kafka 获取消息和提交到集群这两个环节在
性能上的不匹配,保证有足够的数据执行提交。
gcluster_kafka_max_message_size该参数用来配置 consumer 从 kafka 获取消息,最大支持的消息大小。
单位是字节。配置这个参数的时候需要注意,golden gate 生成最大消息
的大小是可配置的,kafka server 能够接收的最大消息的大小也是可配置的,
consumer 的配置最好与 golden gate 和 kafka 一致。
gcluster_kafka_parallel_commit该参数用来配置并行提交,提交阶段分两步,第一步 flush data 到单机,
第二步真正提交,其中第一步可以并行执行,并行度需要根据 CPU 核数来配
置。
gcluster_kafka_primarykey_can_be_null设为 1 表示允许 kafka 消息里的主键 value=null。
默认值 最小值 最大值
0 0 1
gcluster_kafka_result_checkconsumer 会根据当前要提交的数据计算预期影响行数,并与单机返回的实
际影响行数做比较,如果一致则提交,否则报错不提交。
默认值 最小值 最大值
0 0 1
gcluster_load_rebalance_seed加载gnode选点的负载均衡参数,减少热点gnode的几率。
gcluster_loader_max_data_processors一次加载任务使用的最大加载机个数,默认值16。 节点随机选择,参考gcluster_load_rebalance_seed
gcluster_loader_min_chunk_size数据文件最小分块粒度,默认67108864。单位是字节,UINT_MAX 取值为 4294967295。
gcluster_lock_level这个参数用于控制GCluster上锁的开关。
参数=0全部都打开;
参数=1全部关闭;
参数=2只关掉select的锁。
该参数的默认值是2。
gcluster_lock_timeout等待集群锁的超时参数。默认0为不限制。
gcluster_log_include_sql集群日志里包含具体SQL。 如因为安全原因,可以关闭。
gcluster_max_conn_in_pool这个参数用于控制sql查询的连接池,设置连接池中对相同node的最大的连接数。如果当前连接数超出上限,当前请求会阻塞等待空闲线程的出现。注意此参数值,必须小于gnode配置文件中max_connections的值。即gcluster_max_conn_in_pool<max_connections。
该参数的默认值是300。
gcluster_max_thread_in_pool这个参数用于控制集群线程数的上限,如果已到线程数上限,本请求则会阻塞等待空闲线程的出现。
该参数的默认值是600。
配合参数gcluster_use_new_threadpool一起使用,当参数gcluster_use_new_threadpool=1时,需要使用此参数gcluster_max_thread_in_pool来指定最大线程数。
gcluster_optimizer_gather_path_for_agg_compute带limit的group by返回少量结果性能优化。
gcluster_order_by_limit_offset_optimize这个参数用于优化,在SQL语句中带有ORDERBYLIMIT,OFFSET的场景下可以进行优化,启用参数后,首先从GNode中取得需要物化的列及行号,最后再根据行号进行物化,将最终的列返回。
参数=0关闭;
参数=1启用;
该参数的默认值是0。
使用场景:
关闭此参数的场景:select部分的列较少,并且offset的值也较小,关闭此参数。
开启此参数的场景:select部分的列较多,并且offset的值较大,开启此参数,减少物化成本来提升查询性能。
gcluster_parallel_distribution_number默认为 0,为不控制,所有主分片的数据并行分发; >0,表示每个节点上
同时只能有 n 个主分片的数据被并行分发,即 SIS 的数量。
gcluster_query_retry这个参数用于控制是否启用查询重试机制。重试机制是指当主节点不工作时,集群将发送查询给备份节点。默认是不启用。
参数=0关闭;
参数=1启动;
该参数的默认值是1。
适用于高可用备份查询场景:
集群查询中某一步骤,由于连接的节点offline或者其它一些原因查询失败,那么执行器会将该查询由主节点转到备份节点重新查询,但高可用备份查
询的前提为该查询没有进入结果处理阶段,一旦进入该阶段(例如已经有结果发送到客户端),则不会启动高可用备份查询,而直接查询报错。
gcluster_random_insert用于控制随机分布表在执行 insert value 时,发起的集群节点上存在单机节点,数据分布到单机的原则。
0:insert value 数据都落在和发起集群节点相同的单机节点上;
1:insert value 进入的每条数据,采用 random()%分片数 原则,随机落在任意单机节点。
注: 发起 coordinator 节点上不存在 gnode 节点时,目前数据分布逻辑
为 insert value 进入的每条数据,采用 random()%分片数 原则,随机落在任意单机节点。
gcluster_rebalancing_concurrent_count同时执行重分布表的个数。太高,系统资源占用会高,太低,耗时长。可随时调节。
gcluster_rebalancing_immediate_recover_internal_table0(OFF): rebalance 操作处于“Move data to inter table”状态时与
gcrecover 恢复 rebalance 中间表操作互斥;
1(ON): rebalance 操作处于
“Move data to inter table”状态时与 gcrecover 恢复 rebalance 中间表操
作可以并发;
gcluster_rebalancing_parallel_degree控制 rebalance 表时在 gnode 上执行 SIS 时使用的 gbase_parallel_degree 值。
gcluster_rebalancing_random_table_quick_mode对随机分布表做快速重分布,也就是维持现有数据分布状态,不做迁移,直接版本切换到新的。如果是因为空间占用太高原因扩容,有必要关闭此参数,以便各个节点的空间占用平衡。
gcluster_rebalancing_step重分布时,每次迁移的数据行数。当表非常大时,一次性迁移所有数据不一定是最佳方案,本参数给用户一个可以分段进行的控制。
gcluster_rebalancing_update_status_on_drop_table控制在做 rebalance 时,如果有 drop table 是否更新gclusterdb.rebalancing_status 表
参数值为 0:不更新, 参数值为 1:更新
gcluster_reconn_times因网络等异常原因导致gcluster与gcluster、gcluster与gnode、gnode与gnode之间连接失败,重试的次数. 注意,最小是1,不要设置为0,除非你不用内部连接池gcluster_use_conn_pool。
gcluster_send_client_data_timeout集群执行查询语句后,在向客户端发送查询结果集数据时,为了防止陷入
无限阻塞,影响 kill 命令的执行,设置 socket 写超时,单位为秒。当设置为
0 时,不设置超时,发送无限等待,只有发送成功或失败才返回。
默认值 最小值 最大值
30 0 100000
gcluster_serial_exec_query这个参数用于设置SQL批量执行的数量,主要控制并发时,下发到gnode的SQL数量。可作用于最小优先级(0)和低优先级(1)的用户命令。因为root和gbase用户默认的优先级别为2,故在不修改用户优先级的默认情况下无效。
参数=0:不进行控制,SQL全部下发到gnode
参数=其他值进行控制;
该参数的默认值是0。
默认值最小值最大值
0065536
gcluster_single_hash_node_optimize这个参数用于控制是否使用单节点执行查询。用于单表等值hash查询条件的优化,当单表包含hash列的等值条件时,进行hash优化,sql语句仅仅发送给单个节点。
参数=0关闭;
参数=1启用;
该参数的默认值是0。
gcluster_support_binary该参数用于控制是否生成 varbinary 的方式。
取值 1:集群可以建出 binary/varbinary 类型的列;
取值 0 :集群不可以建出 binary/varbinary 类型的列,建出的类型为 char
or varchar 分别对应 binary 和 varbinary;
gcluster_support_hash_redist_combiner这个参数用于控制,当存在ORDERBY或LIMIT的情况下,是否对GROUPBY做动态重分布操作。
参数=0:关闭;
参数=1:开启;
使用场景:
关闭此参数的场景:汇总GROUPBY的代价较小,关闭此参数,以避免为ORDERBY和LIMIT产生额外的汇总步骤。
开启此参数的场景:当分布式执行GROUPBY性能明显优于汇总执行GROUPBY时,开启此参数,以提升查询性能。
该参数的默认值是0。
gcluster_union_optimize这个参数用于设置是否使用union优化。使用union优化时,union优化尽量把union语句发送到节点执行,避免把所有需要union的表都拉成复制表。即利用union的结果集去重的特性,直接将union发送到下层去执行。这样在某些情况下,可以大大减小汇总结点的中间结果集的大小。
参数=0:不使用union优化
参数=1:使用union优化
该参数的默认值是0。
gcluster_use_conn_pool这个参数用于设置是否使用连接池进行数据库连接访问。
参数=0:不使用连接池;
参数=1:使用连接池
该参数的默认值是1。
gcluster_use_new_decimal这个参数用于设置使用decimal的方式。
参数=0:精度为18;
参数=1:精度为65;
该参数的默认值是1。
gcluster_use_special_materialized_table这个参数用于设置使用 into server 数据传输的目标表的类型。
参数 = 0 物理表;
参数 = 1 物化表;
gcluster_wait_query_cancel_timeout这个参数用于设置当检测到某一个节点 left 后,等待其他节点完成查询的
超时时间,单位是毫秒。
该参数的默认值是 200。
interactive_timeout服务器在关闭交互连接之前等待活动的秒数。 交互还是非交互,取决与连接时的参数,是否启用了 CLIENT_INTERACTIVE 参数。默认的gbase_real_connect是非交互模式。
local_infile支持本地文件加载 load data infile '/opt/XXX',在集群里,该参数功能是用过load data infile 'file://的方式来实现的。
log_error这个参数用于设置 GBase 8a 的错误日志文件。
该参数的默认路径为$GBASE_BASE/log/$GBASE_SID/system.log。
max_allowed_packet这个参数用于控制服务器和客户端通讯时,发送和接收的数据包或字符串的最大长度。
一般数据包的通讯缓冲区初始化为 8K 字节。当传输的数据大于 8K 时,缓冲区可以自动增长到 max_allowed_packet 字节。
如果我们需要使用 BLOB 列或长字符串,则需要增加该值。这个值应同我们最大的 BLOB 长度或字符串长度一样大。
max_allowed_packet 的协议限制为 1GB。默认值为 64M。
max_connections允许客户端的最大连接数。该参数默认值是10000
max_heap_table_size这个参数用于设置 MEMORY (HEAP)表可以增长到的最大空间大小。该参数
用来计算 MEMORY 表的 MAX_ROWS 值。
在已有的 MEMORY 表上设置该参数没有效果,除非用 CREATE TABLE 或
TRUNCATE TABLE 等语句重新创建表。
该参数的默认值是 1600000000。
password_format_option0-31 范围
其中密码字符组合要求,默认值为 0,表 示无复杂度要求。 组合中可包含数字(1)、小写字符(2)、 大写字符(4)、其它字符(8)中的 1 种 或多种。
1:表示必须包含数字。
2:表示必须包含小写字母。
4:表示必须包含大写字母。
8:表示必须包含其它字符。
16:表示不能和用户名相同。
要限定组合时配置为上述值的和,可以任 意组合。 例 如 : 限 定 包 含 所 有 种 类 字 符 为 (1+2+4+8=15)。 对非英文字符,按其对应的 ASII 码范围分类。
password_min_length表示密码的最短长度,默认值为 0,表示不限制
长度,最大65535
password_reuse_max默认值为 0,表示不控制。正数值 N 表示允许
的口令间隔,间隔大于 N 才允许设置。
password_reuse_time密码重复使用时最短间隔天数。超过了才能重复使用。默认0不限制。
pid当前连接服务的进程号。 就是ps 里看到的pid号码。
pid_file这个参数用于配置 GBase 8a 保存进程 ID 文件的操作系统路径。
错误的 pid 文件会导致节点的 gcware 不能正常启动或停止服务。当节点的
gcware 启动或停止异常时,可以通过这个参数,查看相应的 pid 文件是否存在,
内容是否正确。
该参数的默认值为$GBASE_BASE/log/$GBASE_SID/gbased.pid
port这个参数用于设置 GBase 8a 节点机器通讯时所使用的端口号。
该参数的值为安装 GBase 8a MPP Cluster 时,指定的节点机器的端口号。
profiling执行耗时跟踪功能。默认关闭。
profiling_history_size执行耗时跟踪功能的历史记录长度。默认15个。
query_cache_limit不缓冲结果集超过这个参数的SQL. 默认1M
query_cache_min_res_unit查询缓冲分配的最小内存块大小,默认4K
query_cache_size设置查询结果缓存大小,默认值是 0M。
query_cache_type是否打开SQL查询结果缓冲。
0:关闭
1:缓冲除了指定 SQL_NO_CACHE的所有SQL
2:只缓冲明确指定 SQL_CACHE 的SQL
query_cache_wlock_invalidate当表有连接WRITE锁时,默认其它连接可以读取cache的内容。
如果为1,则其它连接将等待锁的释放,才能继续。
query_prealloc_size用于语句解析和执行的持久缓冲区的大小(以字节为单位)。此缓冲区不在语句之间释放。如果运行复杂的查询,较大的 query_prealloc_size 值可能有助于提高性能,因为它可以减少服务器在查询执行操作期间执行内存分配所需的需求。
rand_seed1rand_seed1变量rand_seed2变量仅作为会话变量存在,可以设置但无法读取。变量(但不是其值)显示在 SHOW 变量的输出中。

这些变量的目的是支持 RAND() 函数的复制。对于调用 RAND()的语句,源将两个值传递到副本,用于为随机数生成器设定种子。副本使用这些值设置会话变量rand_seed1 rand_seed2,以便副本上的 RAND() 生成与源上相同的值。
rand_seed2rand_seed1变量rand_seed2变量仅作为会话变量存在,可以设置但无法读取。变量(但不是其值)显示在 SHOW 变量的输出中。

这些变量的目的是支持 RAND() 函数的复制。对于调用 RAND()的语句,源将两个值传递到副本,用于为随机数生成器设定种子。副本使用这些值设置会话变量rand_seed1 rand_seed2,以便副本上的 RAND() 生成与源上相同的值。
range_alloc_block_size进行范围优化时分配的块的大小(以字节为单位)。
read_only只读。本参数无效。
read_rnd_buffer_size此变量用于从 GsSys 表读取,对于任何存储引擎,用于多范围读取优化。

在键排序操作后按排序顺序从 GsSys 表中读取行时,将通读此缓冲区的行,以避免磁盘查找。将变量设置为大值可以显著提高 ORDER BY 性能。但是,这是分配给每个客户端的缓冲区,因此不应将全局变量设置为大值。相反,请仅从需要运行大型查询的客户端中更改会话变量。
secure_auth0 可以采用16位的密码策略。
1 强制使用新的密码方案sha1 41位策略。Password()
该参数已经可以废弃,因为默认的都是41位了(sha1),而新的支持sha256版本将使用65位。如果强行开启必须41位,将导致采用sha256的用户无法登录。
secure_file_priv无效
此变量用于限制数据导入和导出操作的效果,例如由 LOAD DATA 和 SELECT 执行的操作。进入 OUTFILE 语句和 LOAD_FILE() 函数。这些操作只允许具有 FILE 权限的用户使用。

secure_file_priv可以设置如下:

如果为空,则变量不起作用。这不是一个安全的设置。

如果设置为目录的名称,服务器将导入和导出操作限制为仅对该目录中的文件进行处理。目录必须存在;服务器不创建它。

如果设置为 NULL,服务器将禁用导入和导出操作。
socket这个参数用于配置服务器通讯时所使用的 socket 文件。
该参数的默认值通常为/tmp/gbase_8a_xxxx.sock。其中 xxxx为安装 GBase
8a MPP Cluster 时所配置的节点机器的端口号。
storage_engine这个参数用于设置表的默认存储引擎。
GBase 8a MPP Cluster 使用存储引擎是 EXPRESS 引擎。
用户不可以修改这个参数的值。错误的存储引擎设置,将导致数据库不能
正常工作。
table_definition_cache缓冲的表定义缓冲数量。
table_open_cache同时打开的表的文件描述符缓冲数量。与操作系统open_files有关。
thread_cache_size这个参数的值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能。这个参数默认值是0
thread_handling控制使用线程池方式还是为每个连接建立专用线程
pool-of-threads:线程池方式
one-thread-per-connection:每个连接一个线程(默认)
线程池方式初始化一定数量的工作线程处理客户端请求,当工作线程数不足时动态创建,执行请求(命令字)后线程退出。
thread_pool_size初始化线程的数量,与thread-handling配合使用
thread_stack线程堆栈。建议设置1-4M。
time_format日期格式
time_zone这个参数设置默认的服务器时区。
该参数用于设置全局 time_zone 系统变量。如果未给出该选项,默认时区
为格林威治时间。
通常该参数的值,要求与操作系统的时区设置值一致。错误的时区设置可
能导致数据库的时间函数返回结果不正常。
对于中国地区的客户,通常使用北京时间,因此该参数值设置为'+8:00'。
timestamp当前时间戳。可以修改,DEFAULT会恢复到unix_tiemstamp的值。
tmp_table_size最大的能放在内存的临时表的大小。 实际使用中不能超过 tmp_table_size和 max_heap_table_size。
tmpdir临时文件目录。比如服务器端游标临时表。
tx_isolation事务类型
unique_checks弃用
version版本信息
version_comment版本注释信息
version_compile_machine服务器的二进制类型。
version_compile_os编译Build的操作系统类型
wait_timeout服务器在关闭非交互式连接之前等待活动的秒数。也就是session的Sleep空闲等待时间。
交互还是非交互,取决与连接时的参数,是否启用了 CLIENT_INTERACTIVE 参数。默认的gbase_real_connect是非交互模式。
warning_count最后一个Statement返回的错误,警告信息数量。只读。
core-file这个参数用于控制在 GBase 8a 宕机时,是否生成 core-dump 文件。
core-file 是一个无值参数。
当在参数文件中出现这个参数时,GBase 8a 服务在宕机后,会生成
core-dump 文件。
GBase 8a 默认不启用该参数。