OceanBase 数据库 MySQL 租户可以通过 MySQL 的客户端工具或者 OBClient 工具连接,以进行黑屏操作。对于语句中带"/* */"等的注释的语句,不同客户端工具的处理逻辑存在差异:
- 对于 5.7 之前的 MySQL 版本,客户端默认忽略注释,如需相应的 HINT 生效,则需要在连接的时候加上"-c"。
- 对于 5.7 以及之后的 MySQL 版本,客户端不忽略注释。
- 对于 OBClient ,客户端不忽略注释,哪怕连接的时候加上"",注释也不会被忽略。
需要特别强调的是,自 MySQL 5.7.20 以后,忽略注释的行为已经被标注为 "deprecated",建议弃用此功能。
以下为在 OCP 安装之后,主机上自动安装的 mysql Ver 15.1 Distrib 10.3.34-MariaDB, for Linux (x86_64) using readline 5.1 中的测试结果。
MySQL 客户端设置
--skip-comments,相应的 HINT 会被忽略。mysql -h192.168.1.5 -P2883 -uroot@sys#obdemo -p'XXXXXXXXXX' -A oceanbase --skip-comments MySQL [oceanbase]> select /*+ query_timeout(1)*/ count(*) from __all_rootservice_event_history; +----------+ | count(*) | +----------+ | 2583596 | +----------+ 1 row in set (4.314 sec)MySQL 客户端保持默认配置(不使用"-c"),相应的 HINT 会被忽略。
mysql -h192.168.1.5 -P2883 -uroot@sys#obdemo -p'XXXXXXXXXX' -A oceanbase MySQL [oceanbase]> select /*+ query_timeout(1)*/ count(*) from __all_rootservice_event_history; +----------+ | count(*) | +----------+ | 2583596 | +----------+ 1 row in set (1.230 sec)MySQL 客户端使用"-c",相应的 HINT 生效。
mysql -h192.168.1.5 -P2883 -uroot@sys#obdemo -p'XXXXXXXXXX' -A oceanbase -c MySQL [oceanbase]> select /*+ query_timeout(1)*/ count(*) from __all_rootservice_event_history; ERROR 4012 (HY000): Timeout
以下为在 "obclient Ver 2.2.0 Distrib 10.4.18-MariaDB, for Linux (x86_64) using readline 5.1" 中的测试结果。
OBClient 客户端设置"--skip-comments",相应的 HINT 依然生效。
obclient -h192.168.1.5 -P2883 -uroot@sys#obdemo -p'XXXXXXXXXX' -A oceanbase --skip-comments obclient [oceanbase]> select /*+ query_timeout(1)*/ count(*) from __all_rootservice_event_history; ERROR 4012 (HY000): TimeoutOBClient 客户端保持默认配置(不使用"-c"),相应的 HINT 依然生效。
obclient -h192.168.1.5 -P2883 -uroot@sys#obdemo -p'XXXXXXXXXX' -A oceanbase obclient [oceanbase]> select /*+ query_timeout(1)*/ count(*) from __all_rootservice_event_history; ERROR 4012 (HY000): TimeoutOBClient 客户端使用"-c",相应的 HINT 依然生效。
obclient -h192.168.1.5 -P2883 -uroot@sys#obdemo -p'XXXXXXXXXX' -A oceanbase -C obclient [oceanbase]> select /*+ query_timeout(1)*/ count(*) from __all_rootservice_event_history; ERROR 4012 (HY000): Timeout
适用版本
MySQL/OBClient