连接obproxy后,执行SHOW PARAMETERS,查询tx_isolation和transaction_isolation有什么区别吗

测试环境,ob-ce-3.1.4

$ /home/admin/obproxy/bin/obproxy -V
obproxy (OceanBase 3.2.3.5 2)

连接,查询参数配置

$ mysql -h127.0.0.1 -P3308 -uroot@proxysys -A
...
mysql> SHOW PARAMETERS ;
+--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| tx_isolation             | READ-COMMITTED    |
| system_time_zone         | +08:00            |
| time_zone                | +08:00            |
| character_set_server     | utf8mb4           |
| character_set_client     | utf8mb4           |
| interactive_timeout      | 28800             |
| query_cache_size         | 1048576           |
| character_set_results    | utf8mb4           |
| max_allowed_packet       | 4194304           |
| sql_mode                 | STRICT_ALL_TABLES |
| net_buffer_length        | 16384             |
| wait_timeout             | 28800             |
| lower_case_table_names   | 2                 |
| query_cache_type         | OFF               |
| init_connect             |                   |
| transaction_isolation    | READ              |
| character_set_connection | utf8mb4           |
| net_write_timeout        | 60                |
+--------------------------+-------------------+

请问上述输出结果中,tx_isolation 和 transaction_isolation 区别是什么。
另外,一个显示 READ-COMMITTED,一个显示 READ,是否算bug?
谢谢。

为啥执行 show RECYCLEBIN 也出这个结果 :innocent:。。。

obclient [(none)]> show RECYCLEBIN;
+--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| tx_isolation             | READ-COMMITTED    |
| system_time_zone         | +08:00            |
| time_zone                | +08:00            |
| character_set_server     | utf8mb4           |
| character_set_client     | utf8mb4           |
| interactive_timeout      | 28800             |
| query_cache_size         | 1048576           |
| character_set_results    | utf8mb4           |
| max_allowed_packet       | 4194304           |
| sql_mode                 | STRICT_ALL_TABLES |
| net_buffer_length        | 16384             |
| wait_timeout             | 28800             |
| lower_case_table_names   | 2                 |
| query_cache_type         | OFF               |
| init_connect             |                   |
| transaction_isolation    | READ              |
| character_set_connection | utf8mb4           |
| net_write_timeout        | 60                |
+--------------------------+-------------------+

transaction_isolation是为了兼容mysql加的一个变量,目前是没有用的;以tx_isolation的值为准;

为了避免transaction_isolation的值给大家带来困惑,我们后续版本后调整一个变量的值;

从 5.7.20 版本开始,transaction_isolation 作为 tx_isolation 的别名被引入,而 tx_isolation 在 8.0 版本后被废弃了,应用应该使用 transaction_isolation,而非 tx_isolation。

OB的MySQL模式是否保持与MySQL一致?

MySQL官网说明:
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

1 个赞

二者没有任何区别,仅仅为兼容引入。修改其中一个变量时,预期另一个变量也会同步改变。可以理解成 transaction_isolation 是 tx_isolation 的别名。