Klustron系统变量
在Klustron集群中,分为两种类型的系统变量:计算节点的系统变量和存储节点的系统变量,下文会详细介绍这两种系统变量的具体内容。
1. 计算节点kunlun-server系统变量
Klustron集群中维护了许多影响操作的系统变量,在计算节点中,大多数系统变量都是可以在kunlun-server启动时通过配置文件加载进行配置,也可以在kunlun-server运行时使用set语句和reload的方式动态调整系统变量的值。在进行配置修改之前,必须清楚理解系统变量的实际含义、应用配置方式、变量类型,以免配置失败或更严重的影响到Klustron的使用。
在Klustron集群的计算节点中,应用系统变量的设置方式有几种,按照从应用配置要求的难度降序进行介绍:
Internal,不能直接更改这些设置;它们反映了内部确定的值。其中的一些可以通过用不同的配置选项重建服务器,或通过改变提供给initdb的选项来更改。
Postmaster,这些选项只在服务器启动时使用,所以任何改变都需要重启服务器。这些设置的值通常存储在 postgresql.conf文件中,或当服务器启动时传递给命令行。 当然,带有任何低context类型的设置也可以在服务器启动时设置。Postmaster配置类型的系统变量,需要在alter system set语句执行后,然后重启kunlun-server才会生效,并且会持久化到配置文件中,此后打开新的session都会以修改后的值应用。注意,使用set命令会执行修改后会返回报错。
Sighup,这些设置可以在postgresql.conf中改变而不用重启服务器。 发送一个Sighup信号到主进程使其重读postgresql.conf 并应用改变。主进程也将Sighup信号传递给它的子进程, 这样它们所有都使用新值。Sighup配置类型的系统变量,需要alter system set语句执行,然后使用reload后当前session会立即生效,并且会持久化到配置文件中,新的session或者重启kunlun-server都会以修改后的值应用。注意,使用set命令会执行修改后会返回报错。
Backend,这些设置可以在postgresql.conf中改变而不用重启服务器; 它们也可以在连接需求包中为特定的会话设置(例如,通过libpq的 PGOPTIONS环境变量)。不过,这些设置在会话启动后永远不会改变。 如果你在postgresql.conf中改变了它们,那么发送一个Sighup 信号到主进程使其重读postgresql.conf。新值将只影响随后加载的会话。Backend配置类型的系统变量,需要alter system set语句执行,然后使用reload后新打开的session会生效,对于当前的session不生效。修改后会持久化到配置文件中,重启kunlun-server会以修改后的值应用。注意,使用set命令会执行修改后会返回报错。
SuperUser,这些值可以在postgresql.conf中设置,或在一个会话中通过SET 命令设置;但是只有超级用户可以通过SET改变它们。在postgresql.conf 中改变它们将只在没有会话本地值是使用SET建立的时影响现有会话。SuperUser配置类型的系统变量,只有超级用户可以使用set命令执行,并使当前session立即生效,也可以使用alter system set语句执行,然后使用reload后当前session会立即生效,并且会持久化到配置文件中,新的session或者重启kunlun-server都会以修改后的值应用。
User,这些值可以在postgresql.conf中设置,或在一个会话中通过SET 命令设置。允许任何用户改变他们的会话本地值。postgresql.conf 中的改变将只在没有会话本地值是使用SET建立的时影响现有会话。User配置类型的系统变量,用户可以使用set命令执行,并使当前session立即生效,也可以使用alter system set语句执行,然后使用reload后当前session会立即生效,并且会持久化到配置文件中,新的session或者重启kunlun-server都会以修改后的值应用。
Tips :
- reload方式进行系统变量的持久化操作,见系统变量FAQ章节。
- 所有的系统变量中,有部分系统变量是Klustron特有的,这里只对Klustron计算节点中特有的系统变量进行介绍。
Klustron特有系统变量介绍
变量名称 | autocommit |
---|
变量含义 | 是否启用自动提交模式。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | check_primary_interval_secs |
---|
变量含义 | 检查所有存储分片和元数据分片主节点的周期。 |
变量类型 | Integer |
默认值 | 3 |
取值范围 | [1,100] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | client_connection_type |
---|
变量含义 | 客户端连接类型是mysql还是pg。 |
变量类型 | Enumeration |
默认值 | FE_PG |
可选值 | FE_UNKNOWN,FE_PG,FE_MYSQL |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | cluster_commitlog_group_size |
---|
变量含义 | 提交日志xid写入组大小。 |
变量类型 | Integer |
默认值 | 8 |
取值范围 | [1,67108864] |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | comp_node_id |
---|
变量含义 | 这个是由创建计算节点的时候,分配给计算节点的。 |
变量类型 | Integer |
默认值 | |
取值范围 | [0,2147483647] |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | debug_remote_connection |
---|
变量含义 | 以Notice的形式展示sql执行过程中访问了哪些分片。用于功能调试。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | declared_mysql_server_version |
---|
变量含义 | KunlunServer将自己声明为MySQL客户端连接器的MySQL版本。 |
变量类型 | String |
默认值 | 8.0.29 |
应用设置要求 | Sighup |
引入版本 | v1.2 |
变量名称 | default_nulls_smallest |
---|
变量含义 | 在升序排序时,默认将null当作最小值。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | default_pgsql_collation |
---|
变量含义 | 如果给定MySQL字符集和排序规则,pg_MySQL_collation_mapping中没有有效的PostgreSQL排序规则,则按照MySQL会话的默认PostgreSQL排列规则。 |
变量类型 | String |
默认值 | ucs_basic |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_block_nestloop |
---|
变量含义 | 是否启用block nestloop功能,从而减少与存储节点的交互次数。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_catalog_security_policy |
---|
变量含义 | 为系统目录关系添加行级安全检查,避免用户查看到无权访问的对象名称(例如表名等)。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | enable_collation_pushdown |
---|
变量含义 | 将排序规则下推到存储节点。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_coredump |
---|
变量含义 | 当任何postgres进程捕捉到致命信号时,是否生成核心转储文件。核心转储文件对于错误诊断非常有用。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | Sighup |
引入版本 | v1.2 |
变量名称 | enable_debug_remote_path |
---|
变量含义 | 用于优化器调试。展示查询优化过程中产生的所有备选remote算子。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_flatten_correlated_sublink |
---|
变量含义 | 展平将任何子查询关联到半连接。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_global_deadlock_detection |
---|
变量含义 | 启用全局死锁检测和解析。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | Sighup |
引入版本 | v1.2 |
变量名称 | enable_global_mvcc |
---|
变量含义 | 启用全局mvcc功能。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | enable_olap_mode |
---|
变量含义 | 设置一些参数以优化olap工作负载。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_parallel_remotescan |
---|
变量含义 | 将remote scan计划视为并行安全,以提高并行性。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_pg_mysql_charset_mapping_deduction |
---|
变量含义 | 一些映射是从文档和公共信息中推导出来的,是否使用这种推导的映射。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_agg_pushdown |
---|
变量含义 | 尝试将聚合下推到存储分片以获得更好的性能。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_cursor |
---|
变量含义 | 使用游标从远程分片中获取元组,前提是设置了enable_shard_binary_protocol。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_distinct_pushdown |
---|
变量含义 | 尝试将distinct子句下推到存储分片以获得更好的性能。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_indexscan |
---|
变量含义 | 尝试创建远程索引扫描计划。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_join_pushdown |
---|
变量含义 | 如果左表和右表位于同一存储分片中,则尝试下推表连接。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_limit_pushdown |
---|
变量含义 | 尝试将 LIMIT 子句下推到存储分片以获得更好的性能。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_remote_orderby_pushdown |
---|
变量含义 | 尝试将排序下推到存储分片以获得更好的性能。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_replica_read |
---|
变量含义 | 开启replica读功能,减少master的读负载。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_shard_binary_protocol |
---|
变量含义 | 当客户端使用二进制协议与计算节点通讯时,计算节点也使用mysql二进制协议与shard进行通信。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | SuperUser |
引入版本 | v1.2 |
变量名称 | enable_sql_log |
---|
变量含义 | 将发送到存储分片的sql记录到单独的sql日志中,便于问题定位。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | enable_stacktrace |
---|
变量含义 | 当任何 postgres 进程捕获致命信号时是否将堆栈跟踪打印到服务器日志文件中。 堆栈跟踪对于错误诊断很有用。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | Sighup |
引入版本 | v1.2 |
变量名称 | enable_stmt_subxact |
---|
变量含义 | 将用户查询包装到内部子事务中,并在发生错误时回滚子事务,而不是回滚整个事务。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | force_remote_sql_parameterize |
---|
变量含义 | 参数化下推sql中的所有常量,而从使用二进制协议与存储节点通讯。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | SuperUser |
引入版本 | v1.2 |
变量名称 | force_secure_file_access_proc |
---|
变量含义 | 调用文件访问函数时强制使用 unix 套接字。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | Sighup |
引入版本 | v1.2 |
变量名称 | global_deadlock_detector_victim_policy |
---|
变量含义 | 设置全局死锁检测器如何选择受害者来终止以解决全局死锁。 |
变量类型 | Enumeration |
默认值 | KILL_MOST_ROWS_LOCKED |
可选值 | KILL_OLDEST,KILL_YOUNGEST,KILL_MOST_ROWS_CHANGED,KILL_LEAST_ROWS_CHANGED,KILL_MOST_ROWS_LOCKED,KILL_MOST_WAITING_BRANCHES,KILL_MOST_BLOCKING_BRANCHES |
应用设置要求 | Sighup |
引入版本 | v1.2 |
变量名称 | global_txn_commit_log_wait_max_secs |
---|
变量含义 | 两阶段提交时,向元数据服务器写事务日志的超时时间。 |
变量类型 | Integer |
默认值 | 10 |
取值范围 | [1,100000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | gtss_concurrency |
---|
变量含义 | 用于写入提交日志的协程数量。 |
变量类型 | Integer |
默认值 | 4 |
取值范围 | [1,8] |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | internal_read_only_double_quotes_symbols |
---|
变量含义 | 当前会话是否使用双引号(") 引用数据库对象(表、列、函数等)的名称(true)或字符串文字(false)。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | max_remote_insert_blocks |
---|
变量含义 | 计算节点向存储节点插入数据时,insert语句的最大长度。 |
变量类型 | Integer |
默认值 | 1024 |
取值范围 | [8,1048576] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | metadata_connect_timeout |
---|
变量含义 | 连接到元数据服务器时的超时。 |
变量类型 | Integer |
默认值 | 20 |
取值范围 | [1,100000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | metadata_read_timeout |
---|
变量含义 | 读取元数据服务器时的超时。 |
变量类型 | Integer |
默认值 | 20 |
取值范围 | [1,100000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | metadata_write_timeout |
---|
变量含义 | 写入元数据服务器时的超时。 |
变量类型 | Integer |
默认值 | 20 |
取值范围 | [1,100000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | min_remote_index_paralleism |
---|
变量含义 | remote index scan算子的最小并行度。 |
变量类型 | Integer |
默认值 | 0 |
取值范围 | [0,1024] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_ansi_quotes |
---|
变量含义 | 使用双引号(") 来引用符号名称而不是字符串常量。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_default_schema |
---|
变量含义 | 仅在连接建立时 MySQL 连接的默认架构。 如果为空,请执行与 PostgreSQL 连接相同的操作并设置为“$User, public”模式。 |
变量类型 | String |
默认值 | |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_interactive_timeout |
---|
变量含义 | 在断开连接之前等待来自 mysql CLI 程序的下一个命令的超时时间。 |
变量类型 | Integer |
默认值 | 1800 |
取值范围 | [1,2000000000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_net_buffer_length |
---|
变量含义 | MySQL 服务器协议每个客户端连接读/写缓冲区大小。 |
变量类型 | Integer |
默认值 | 65536 |
取值范围 | [16384,1048576] |
单位 | 字节 |
应用设置要求 | Backend |
引入版本 | v1.2 |
变量名称 | mysql_net_retry_count |
---|
变量含义 | 重试与对等方连接/写入/读取的次数。 |
变量类型 | Integer |
默认值 | 10 |
取值范围 | [1,1000000] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_port |
---|
变量含义 | 设置服务器使用 MySQL 协议侦听 mysql 客户端的 TCP 端口。 |
变量类型 | Integer |
默认值 | 由用户指定 |
取值范围 | [1,65535] |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | mysql_protocol_compression_algos |
---|
变量含义 | MySQL 使用的协议压缩算法,只能是 'zlib'、'zstd' 和 'uncompressed' 的组合。 |
变量类型 | String |
默认值 | zlib, zstd, uncompressed |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_protocol_ps_exec_fetch_rows |
---|
变量含义 | 在 EXECUTE 或 FETCH 命令中通过 MySQL 二进制协议获取多少行,如果在 EXECUTE 中一次获取全部行,则为 0。 |
变量类型 | Integer |
默认值 | 0 |
取值范围 | [0,2147483647] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | mysql_send_resultset_metadata |
---|
变量含义 | 是否发送使用 MySQL 协议的连接的结果集元数据。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | SuperUser |
引入版本 | v1.2 |
变量名称 | mysql_wait_timeout |
---|
变量含义 | 在断开连接之前等待来自 mysql 客户端的下一个命令的超时时间。 |
变量类型 | Integer |
默认值 | 1800 |
取值范围 | [1,2000000000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | net_motion_cost |
---|
变量含义 | 计算节点从存储节点读取4kb数据块的开销,用于优化器代价估算。 |
变量类型 | Real |
默认值 | 1 |
取值范围 | [0,1.79769e+308] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | net_motion_penalty |
---|
变量含义 | 计算节点和存储节点每次交互的惩罚值,用于优化器代价估算。 |
变量类型 | Real |
默认值 | 100 |
取值范围 | [0,1.79769e+308] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | only_full_group_by |
---|
变量含义 | 拒绝以下查询:select字段列表、having 条件或 order by 列表引用既未在 GROUP BY 子句中命名也不在功能上依赖于它们的非聚合列。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | plan_cache_mode |
---|
变量含义 | 控制计划者对自定义或通用计划的选择。 |
变量类型 | Enumeration |
默认值 | auto |
可选值 | auto,force_generic_plan,force_custom_plan |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | remote_cursor_prefetch_rows |
---|
变量含义 | 计算节点使用游标从存储节点成批地读取数据时,每个批次读取的行数。 |
变量类型 | Integer |
默认值 | 1000 |
取值范围 | [1,2147483647] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | remote_print_warning |
---|
变量含义 | 如果某些运算符/函数无法下推到存储节点,则启用警告。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | replica_read_fallback |
---|
变量含义 | 启用读写分离功能时,当没有可供副本读取的副本时的回退策略。 0:报错; 1:任意副本; 2:主节点。 |
变量类型 | Integer |
默认值 | 2 |
取值范围 | [0,3] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | replica_read_latency_threshold |
---|
变量含义 | 启用读写分离功能时,可用于副本读取的副本的binlog同步延迟阈值。 |
变量类型 | Real |
默认值 | 0 |
取值范围 | [0,1e+10] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | replica_read_order |
---|
变量含义 | 启用读写分离功能时,按什么对副本的优先级进行排序(优先级越高被选择概率越大)。 0:ro_weight; 1:ping延迟; 2:binlog同步延迟。 |
变量类型 | Integer |
默认值 | 0 |
取值范围 | [0,3] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | replica_read_ping_threshold |
---|
变量含义 | 启用读写分离功能时,从当前计算节点到可用于副本读取的副本的 ping 延迟阈值。 |
变量类型 | Real |
默认值 | 0 |
取值范围 | [0,1e+10] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | sharding_policy |
---|
变量含义 | 选择放置表的分片的策略。 0:随机; 1:最少存储; 2:最少表; 3:第一个碎片。 |
变量类型 | Integer |
默认值 | 0 |
取值范围 | [0,5] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | single_shard_mode |
---|
变量含义 | 集群只有一个分片时的一种集群部署模式。 在该模式下,计算节点在执行DDL时仅改变本地元数据,并且允许用户自由定义计算节点 schema和存储节点 schema之间的对应关系。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | Postmaster |
引入版本 | v1.2 |
变量名称 | sql_auto_is_null |
---|
变量含义 | 用于兼容mysql,一直为false。 |
变量类型 | Boolean |
默认值 | OFF |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | start_global_deadlock_detection_wait_timeout |
---|
变量含义 | 如果发送到存储分片的插入/删除/更新语句在这么长时间后没有返回,则启动一轮死锁检测。 |
变量类型 | Integer |
默认值 | 500 |
取值范围 | [1,2147483647] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | synchronize_meta_data_interval_secs |
---|
变量含义 | 设置从元集群同步元数据的时间间隔。 |
变量类型 | Integer |
默认值 | 60 |
取值范围 | [1,1000] |
单位 | 秒 |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | table_migration_recovery_max_retries |
---|
变量含义 | 存储节点因表迁移而报NO_SUCH_TABLE错误时的最大重试次数。 |
变量类型 | Integer |
默认值 | 8 |
取值范围 | [0,16] |
应用设置要求 | User |
引入版本 | v1.2 |
变量名称 | transform_create_db_to_schema |
---|
变量含义 | 仅在 MySQL 连接中,将所有 CREATE DATABASE 语句转换为 CREATE SCHEMA 语句。 |
变量类型 | Boolean |
默认值 | ON |
应用设置要求 | User |
引入版本 | v1.2 |
2. 存储节点kunlun-storage系统变量
Klustron集群中维护了许多影响操作的系统变量,在存储节点中,大多数系统变量都是可以通过在kunlun-storage启动时通过配置文件加载进行配置,也可以在kunlun-storage运行时使用set命令和set global命令的方式动态调整系统变量的值。在进行配置修改之前,必须清楚理解系统变量的实际含义、作用范围、变量类型,以免配置失败或更严重的影响到Klustron的使用。存储节点的系统变量调整时,需谨慎对待,调整前可以联系Klustron团队确认。
在Klustron集群的存储节点中,设置系统变量的作用范围分为两种级别Session和Global,与MySQL设置方式一致:
- Session级别,通过set命令的方式修改Session级别变量,会在当前Session中立即生效,直到更改为其他值或者重新打开Session。此更改对其他Session没有影响。
- Global级别,通过set global命令的方式修改Global级别的系统变量,修改的系统变量值将会固化到存储节点中,作用范围只有Global的系统变量,会立即生效;如果作用范围有Global和Session两种级别的,则修改的变量值对当前连接会话不会生效,会继续使用当前会话的Session变量值,仅仅会影响到更改之后新打开的Session。
Klustron特有系统变量介绍
如下系统变量都是Klustron存储节点特有的,不包含MySQL的系统变量。
变量名称 | gmvcc_register_txns_at_readview_creation |
---|
变量含义 | 注册事务,其 tgvc 条目在创建时缓存到每个读取视图中,以消耗更多内存为代价获得更好的性能。 |
变量类型 | Boolean |
默认值 | FALSE |
作用范围 | Global |
动态修改 | No |
引入版本 | v1.2 |
变量名称 | enable_fullsync |
---|
变量含义 | 是否全局启用fullsync机制或者在当前会话中启用fullsync机制。 |
变量类型 | Boolean |
默认值 | TRUE |
作用范围 | Global,Session |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_timeout |
---|
变量含义 | 如果自事务开始等待副本 ACK 后这么多毫秒仍未到达,则向客户端返回错误并在错误日志中写入错误。 |
变量类型 | Integer |
默认值 | 30000 |
取值范围 | [5,4294967295] |
单位 | 毫秒 |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_warning_timeout |
---|
变量含义 | 如果自事务开始等待以来副本 ACK 到达这么多毫秒,请在错误日志中写入警告。 |
变量类型 | Integer |
默认值 | 3000 |
取值范围 | [3,4294967295] |
单位 | 毫秒 |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | skip_fullsync_replica_acks_older_than |
---|
变量含义 | 如果副本比主节点晚这么多毫秒,请跳过 fsync 中继日志或发送 ACK。 |
变量类型 | Integer |
默认值 | 3600000 |
取值范围 | [0,4294967295] |
单位 | 毫秒 |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_fsync_ack_wait_max_milli_secs |
---|
变量含义 | 副本节点在fsync'in中继日志并发送ACK之前,等待更多的事件组到达最多等待这么多毫秒。 |
变量类型 | Integer |
默认值 | 2 |
取值范围 | [0,4294967295] |
单位 | 毫秒 |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_fsync_ack_least_txns |
---|
变量含义 | 在 fsync 中继日志并发送 ACK 之前,至少累积这么多事件组。 |
变量类型 | Integer |
默认值 | 10 |
取值范围 | [0,4294967295] |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_fsync_ack_least_event_bytes |
---|
变量含义 | 在 fsync 中继日志并发送 ACK 之前,至少累积这么多中继日志字节。 |
变量类型 | Integer |
默认值 | 4096 |
取值范围 | [0,4294967295] |
单位 | 字节 |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_relaylog_fsync_ack_level |
---|
变量含义 | 此变量的值在创建时分配给副本通道,以确定何时启用全同步,副本通道在将其接收到的事件组写入中继日志文件后是否应 fsync 中继日志和/或回复 ACK 到其主通道 。 0:不fsync或发送ACK; 1:不fsync,但发送ACK; 2:fsync 并发送 ACK 要随后更改通道特定设置,请执行 CHANGE MASTER TO FULLSYNC_RELAY_LOG_FSYNC_ACK_LEVEL={0|1|2} [FOR CHANNEL 'xxx']。 |
变量类型 | Integer |
默认值 | 2 |
取值范围 | [0,2] |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | fullsync_consistency_level |
---|
变量含义 | 在事务提交结束时,在回复客户端事务已提交之前是否以及如何等待全同步副本 ACK。 0:不等待; Positive:等待这个数量的 ACK。 |
变量类型 | Integer |
默认值 | 1 |
取值范围 | [0,1024] |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | bg_worker_threads |
---|
变量含义 | bg工作线程数。 |
变量类型 | Integer |
默认值 | 16 |
取值范围 | [4,256] |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | slow_logging_start_point |
---|
变量含义 | 慢日志记录的查询周期开始:查询接收(2)、查询开始(1) 或锁定(0) 后到结束时间。 |
变量类型 | Integer |
默认值 | 2 |
取值范围 | [0,2] |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
变量名称 | print_extra_info_verbosity |
---|
变量含义 | 打印额外信息以帮助问题诊断的详细程度,包括断开连接信息、新添加的日志事件字段等。越大越详细/打印的信息,0 将禁用打印任何详细信息。 |
变量类型 | Integer |
默认值 | 1 |
取值范围 | [0,100000] |
作用范围 | Global |
动态修改 | Yes |
引入版本 | v1.2 |
系统变量FAQ
1.reload的配置方式如何操作?
A:Klustron中调整系统变量时,部分是需要重启kunlun-server的,部分是可以通过reload重新加载配置的方式将系统变量固化到计算节点中。
这里以修改系统变量statement_timeout为例,先登录kunlun-server查看该系统变量默认值:
show statement_timeout;
示例图片:

查看修改系统变量值的类型:
select * from pg_settings where name='statement_timeout';
图片示例:

修改配置值:
alter system set statement_timeout = 200000;
示例图片:

查看kunlun-server进程,确认pg_ctl工具所在目录
这里以kunlun-server的端口号23007为例:
ps -ef|grep 23007
图片示例:

查看pg_ctl所在的目录:
cd /data/ha/kunlun/instance_binaries/computer/23007/Klustron-server-1.2.1/bin
ls -l
图片示例:

执行reload:
./pg_ctl -D /data/ha/kunlun/server_datadir/23007 reload
图片示例:

检验是否调整成功,登录kunlun-server查看该系统变量默认值:
show statement_timeout ;
图片示例:

注意:kunlun-server可能存在多个,所以其他的kunlun-server也需要以同上的步骤进行修改,保证所有的kunlun-server系统变量配置值是一致,大多数情况下系统变量的值在多个计算节点中都应保持一致,如有特殊用户需求则另外进行调整。
这里以修改系统变量cluster_commitlog_delay_ms为例,先登录kunlun-server查看该系统变量默认值:
show cluster_commitlog_delay_ms;
示例图片:

查看修改系统变量值的类型:
select * from pg_settings where name='cluster_commitlog_delay_ms';
示例图片:

修改配置值:
alter system set cluster_commitlog_delay_ms=11;
示例图片:

查看kunlun-server进程,确认pg_ctl工具所在目录
这里以kunlun-server的端口号23001为例:
ps -ef|grep 23001
图片示例:

查看pg_ctl所在的目录:
cd /data/ha/kunlun/instance_binaries/computer/23001/Klustron-server-1.2.1/scripts
ls -l
图片示例:

执行重启kunlun-server:
停止:
python2 stop_pg.py --port=23001
图片示例:

启动:
python2 start_pg.py --port=23001
复核启动成功:
ps -ef|grep 23001
图片示例:

检验是否调整成功,登录kunlun-server查看该系统变量默认值:
show cluster_commitlog_delay_ms ;
图片示例:

注意:kunlun-server可能存在多个,所以其他的kunlun-server也需要以同上的步骤进行修改,保证所有的kunlun-server系统变量配置值是一致,大多数情况下系统变量的值在多个计算节点中都应保持一致,如有特殊用户需求则另外进行调整。
END