OceanBase的系统变量和SQL功能相关,存储在内部表 __all_sys_variable 中,如环境变量、字符集等信息。
系统变量说明下表所示。
变量名 | 类型 | 默认值 | 说明 | 属性 |
autocommit | int | 1 | 是否自动提交。 | GLOBAL | SESSION |
auto_increment_increment | int | 1 | 自增步长,仅用于MySQL客户端登录。 | GLOBAL | SESSION |
auto_increment_offset | int | 1 | auto_increment_offset确定AUTO_INCREMENT列值的起点。 | GLOBAL | SESSION |
binlog_row_image | varchar | full | 有以下选项。 full,记录所有列; minimal,只复制DML操作中修改的数据元素,提升主从复制吞吐量,减少binlog大小、网络资源和服务器内存占用; noblob,记录所有列除了BLOB和TEXT列。(目前OceanBase1.0 不支持BLOB和TEXT数据类型) | GLOBAL | SESSION | INFLUENCE | NEED_SERIALIZE |
character_set_client | varchar | utf8mb4 | 客户端字符集设置 | GLOBAL | SESSION | NULL |
character_set_connection | varchar | utf8mb4 | 连接字符集设置 | GLOBAL | SESSION | NULL |
character_set_database | varchar | utf8mb4 | 数据库字符集设置 | GLOBAL | SESSION | NULL |
character_set_filesystem | varchar | binary | 文件系统字符集。这个变量是用来解析字符串引用的文件名,默认值是二进制的,这意味着不发生转换。 | GLOBAL | SESSION | NULL |
character_set_results | varchar | utf8mb4 | 服务器端返回给客户端字符集。 | GLOBAL | SESSION | NULL |
character_set_server | varchar | utf8mb4 | 服务器端字符集 | GLOBAL | SESSION | NULL |
character_set_system | varchar | utf8mb4 | 系统存储字符集 | GLOBAL | SESSION | READONLY |
collation_connection | varchar | utf8mb4_general_ci | 连接校验规则 | GLOBAL | SESSION | NULL | INFLUENCE |
collation_database | varchar | utf8mb4_general_ci | 数据库校验规则 | GLOBAL | SESSION | NULL |
collation_server | varchar | utf8mb4_general_ci | 服务器端校验规则 | GLOBAL | SESSION | NULL |
connect_timeout | int | 10 | 连接超时时间 | GLOBAL | SESSION |
datadir | varchar | - | 数据存放目录 | GLOBAL | SESSION |
debug_sync | varchar | - | Sync Point(同步点)功能,通过使用DEBUG_SYNC,可以手动构造不同线程间的并发执行序列,验证特殊并发逻辑下的代码处理正确性。 | SESSION | INVISIBLE |
div_precision_increment | int | 4 | 该变量说明用/操作符执行除操作的结果可增加的精确度的位数。 取值范围:[0,30] | GLOBAL | SESSION | INFLUENCE | NEED_SERIALIZE |
explicit_defaults_for_timestamp | int | 0 | 指定timestamp数据类型的默认属性。 timestamp的默认值为0。 | READONLY | GLOBAL |
group_concat_max_len | int | 1024 | 允许的GROUP_CONCAT()函数结果的最大长度。 | GLOBAL | SESSION | NEED_SERIALIZE |
identity | int | 0 | 和变量last_insert_id是同义词。 可以通过select @@identity查询。 | SESSION |
interactive_timeout | int | 28800 | 服务器关闭交互式连接前等待活动的秒数。 交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。 又见wait_timeout。 | GLOBAL | SESSION |
last_insert_id | int | 0 | 返回本session最后一次插入的自增字段值。 | SESSION |
lower_case_table_names | int | 1 | 是否大小写敏感。 1:大小写不敏感; 0:大小写敏感 | GLOBAL | SESSION | READONLY |
max_allowed_packet | int | 1048576 | 最大网络包大小。 | GLOBAL | SESSION |
net_read_timeout | int | 30 | 中断读前等待连接的其它数据的秒数。当服务器从客户端读数时,net_read_timeout指控制何时中断的超时值。当服务器向客户端写时,net_write_timeout指控制何时中断的超时值。 | GLOBAL | SESSION |
net_write_timeout | int | 60 | 中断写之前等待块写入连接的秒数。又见net_read_timeout。 | GLOBAL | SESSION |
ob_default_replica_num | int | 1 | 默认的每个集群中表的副本数。 | GLOBAL | SESSION |
ob_enable_aggregation_pushdown | bool | 1 | 是否允许聚合操作下压。 1:允许; 0:不允许。 | GLOBAL | SESSION | INFLUENCE |
ob_enable_index_direct_select | bool | 0 | 是否允许用户直接查询索引表。 1:允许; 0:不允许。 | GLOBAL | SESSION | INFLUENCE |
ob_enable_plan_cache | bool | 1 | 是否打开Plan Cache. 1: 打开; 0:关闭。 | GLOBAL | SESSION |
ob_enable_transformation | bool | 1 | 是否允许SQL重写。 1:允许; 0:不允许。 | GLOBAL | SESSION |
ob_global_debug_sync | varchar | - | ob_global_debug_sync 和变量debug_sync功能相似,区别在于ob_global_debug_sync是全局的(OBServer级别的global) ,debug_sync是session级别。 | SESSION | INVISIBLE |
ob_interm_result_mem_limit | int | 2147483648 | 用于表示对于当前租户的执行sql的过程中的中间结果能占用的最大内存,单位为byte,默认值为2G,取值范围[128M,128G] | GLOBAL | SESSION | NEED_SERIALIZE |
ob_last_schema_version | int | 0 | Schema版本号 | SESSION |
ob_log_level | varchar | disabled | 日志级别 | GLOBAL | SESSION |
ob_max_parallel_degree | int | 16 | 每次请求最大的并发数。 | GLOBAL | SESSION |
ob_proxy_partition_hit | bool | 1 | 表示OBProxy是否将SQL语句请求的数据发送到了这些数据主Partition所在的OBServer上。 1:是; 0:否。 | READONLY | SESSION | INVISIBLE |
ob_proxy_set_trx_executed | bool | 0 | 用户是否通过OBProxy发送了START TRANSACTION Syntax给OBServer 1:是; 0:否。 | READONLY | SESSION | INVISIBLE |
ob_proxy_global_variables_version | int | 0 | 用于OBserver返回给OBproxy需要的全局变量最新版本号信息,此系统变量用户只读但不可以修改,用户select @@ob_proxy_global_variables_version将返回当前全局变量最新版本号 默认值:0 取值范围:用户不可修改 | READONLY | SESSION | INVISIBLE |
ob_query_timeout | int | 10000000 | 查询超时时间。 | GLOBAL | SESSION | NEED_SERIALIZE |
ob_read_consistency | int | 3 | 读一致性级别。3=STRONG, 2=WEAK, 1=FROZEN, 0=NONE | GLOBAL | SESSION | NEED_SERIALIZE |
ob_trx_timeout | int | 100000000 | 事务超时时间。 | GLOBAL | SESSION | NEED_SERIALIZE |
read_only | bool | 0 | 是否只读。 | GLOBAL |
sql_mode | varchar | STRICT_ALL_TABLES | 当前的服务器SQL模式。 | GLOBAL | SESSION | INFLUENCE | NEED_SERIALIZE |
sql_select_limit | int | 9223372036854770000 | SELECT语句返回的最大行数。 | GLOBAL | SESSION | NEED_SERIALIZE |
timestamp | numeric | 1438332437.59361 | 为客户端设定时间。 | GLOBAL | SESSION |
time_zone | varchar | +8:00 | 服务器当前使用的时区。 | GLOBAL | SESSION | NEED_SERIALIZE |
tx_isolation | varchar | READ-COMMITTED | 默认事务隔离级别。 | GLOBAL | SESSION |NEED_SERIALIZE |
tx_read_only | bool | 0 | 事务是否为只读模式。 1:是; 0:否。 | GLOBAL | SESSION | NEED_SERIALIZE |
version | varchar | 5.6.25 | 服务器版本号。 | GLOBAL | SESSION |
version_comment | varchar | OceanBase 1.0.0 | observer 的版本信息。 | READONLY | GLOBAL |
wait_timeout | int | 28800 | 服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。又见interactive_timeout。 | GLOBAL | SESSION |
ob_proxy_user_privilege | int | 0 | 该变量表示当前用户当前登陆user privilege。取值范围:[0, 2^16],取值含义:int类型32位,每个位代表一种权限,该位为1代表具有该权限,为0代表没有该权限。 | READONLY | SESSION_SCOPE | INVISIBLE |
OB_ORG_CLUSTER_ID | unsignedint64 | cluster_id | 类型:unsignedint64 作用:通常情况下不需要设置OB_ORG_CLUSTER_ID变量,OceanBase生成日志(clog)时会使用缺省值(即每一个OceanBase集群的CLUSTER_ID)。DRC在复制数据写入目标集群时,需要在session中设置这个变量为日志中所带的CLUSTER_ID,以避免数据被循环复制 | SESSION |
OB_SPM_MODE | Int64 | 0 | 取值范围[0,2],用于控制spm生成以及演进的开关,当该系统变量的值为0时,baselineplan的生成和演进功能都被禁止,当值为1时,baseline 的生成是打开的,baseline的演进是禁止的,当值为2时,baseline的生成和演进都是打开的。spm以及baseline的相关解释参照文档《OB1.0SPM方案1.1》 | GLOBAL |
ob_capability_flag | uint32 | 0 | 取值范围:[0, 2^32-1],共32位,每个位代表一种功能,该位为1代表observer支持该功能,为0代表不支持。 解释:Indicate features that observer supports, readonlyafter modified by first observer Flags: READONLY | SESSION | INVISIBLE 说明:该变量属于session级别只读系统变量,对用户不可见,表示observer支持的扩展功能。在首次与observer建连接时,observer将该变量通过ok包带回给proxy,切换observer后,proxy不会同步给observer | READONLY| SESSION | INVISIBLE |
ERROR_ON_OVERLAP_TIME | BOOL | FALSE | BOOL类型,动态参数,设置夏令时重叠区时间发生歧义时是否作报错处理,TRUE为报错处理 | GLOBAL | SESSION |
ob_compatibility_mode | enum | MYSQL | 表示该租户的兼容模式,MYSQL表示兼容MYSQL,ORACLE则表示兼容ORACLE。该系统变量只能在创建租户的时候指定,租户创建好之后就无法修改了。 目前创建租户的语法已经具备了设置系统变量的能力: CREATE TENANT [IF NOT EXISTS] tenantname[tenant_characteristic_list] [SET system_variable_name_and_value_list] 因此设置ob_compatibility_mode的时候类似于下面这样写即可: CREATETENANT [IF NOTEXISTS] tenantname [tenant_characteristic_list] SET ob_compatibility_mode= MYSQL | 租户级|READONLY |
ob_create_table_strict_mode | BOOL | TRUE | BOOL类型,动态变量,默认为True,如果设置为true,严格按照locality建立副本,任何副本建立失败,则create table失败。否则,全类型副本至少1个,paxos成员组副本达到多数,其他副本不管,即可成功 | GLOBAL|SESSION |