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