语法兼容性说明
操作场景
本章节基于MySQL官方语法规范,说明各语法在多租户下执行的兼容性情况。
语法兼容性说明
- 对于使用高权限用户无法执行的语法,如ALTER INSTANCE、ALTER TABLESPACE等,在多租户模式下也无法执行。在下表中的是否兼容列标注为N,并添加备注信息。
- 语句的执行结果与租户无关,如SHOW VARIABLES、KILL、SHOW ENGINES等,此类语句在下表中的是否兼容列标注为Y-无区分。
- 语句的执行结果与租户有关,如SHOW DATABASE、CREATE DATABASE、CREATE USER、ALTER USER等,此类语句在下表中的是否兼容列标注为Y或N,并添加备注信息。
| SQL种类 | SQL语法 | TaurusDB是否兼容 | TaurusDB备注 |
|---|---|---|---|
| 数据定义语句 | 原子性DDL | Y | 语法作用的对象按照租户隔离。 |
| ALTER DATABASE | Y |
| |
| ALTER EVENT | Y | 语法作用的对象按照租户隔离。 | |
| ALTER FUNCTION | Y | 语法作用的对象按照租户隔离。 | |
| ALTER INSTANCE | N | 多租户模式下TaurusDB不支持该语法。 | |
| ALTER LOGFILE GROUP | N | TaurusDB不支持NDB模式。 | |
| ALTER PROCEDURE | Y | 语法作用的对象按照租户隔离。 | |
| ALTER SERVER | Y | 普通租户用户需被授予SUPER权限方可执行。 | |
| ALTER TABLE | Y | 语法作用的对象按照租户隔离。 | |
| ALTER TABLESPACE | N | 多租户模式下TaurusDB不支持该语法。 | |
| ALTER VIEW | Y | 语法作用的对象按照租户隔离。 | |
| CREATE DATABASE | Y | 数据库名自动附加租户后缀,普通租户仅可创建自己租户下的数据库。 | |
| CREATE EVENT | Y | 数据库名自动附加租户后缀,普通租户仅可见自己租户下的数据库。 | |
| CREATE FUNCTION | Y | 语法作用的对象按照租户隔离。 | |
| CREATE INDEX | Y | 语法作用的对象按照租户隔离。 | |
| CREATE LOGFILE GROUP | N | TaurusDB不支持NDB模式。 | |
| CREATE PROCEDURE | Y | 语法作用的对象按照租户隔离。 | |
| CREATE SERVER | Y | 普通租户用户需被授予SUPER权限方可执行。 | |
| CREATE SPATIAL REFERENCE SYSTEM | Y | 普通租户用户需被授予SUPER权限方可执行。 | |
| CREATE TABLE | Y | 语法作用的对象按照租户隔离。 | |
| CREATE TABLESPACE | N | 多租户模式下TaurusDB不支持该语法。 | |
| CREATE TRIGGER | Y | 语法作用的对象按照租户隔离。 | |
| CREATE VIEW | Y | 语法作用的对象按照租户隔离。 | |
| DROP DATABASE | Y | 数据库名自动附加租户后缀,普通租户仅可删除自己租户下的数据库。 | |
| DROP EVENT | Y | 数据库名自动附加租户后缀,普通租户仅可删除自己租户下的数据库。 | |
| DROP FUNCTION | Y | 语法作用的对象按照租户隔离。 | |
| DROP INDEX | Y | 语法作用的对象按照租户隔离。 | |
| DROP LOGFILE GROUP | N | TaurusDB不支持NDB模式。 | |
| DROP PROCEDURE | Y | 语法作用的对象按照租户隔离。 | |
| DROP SERVER | Y | 普通租户用户需被授予SUPER权限方可执行。 | |
| DROP SPATIAL REFERENCE SYSTEM | Y | 普通租户用户需被授予SUPER权限方可执行。 | |
| DROP TABLE | Y | 语法作用的对象按照租户隔离。 | |
| DROP TABLESPACE | N | 多租户模式下TaurusDB不支持该语法。 | |
| DROP TRIGGER | Y | 语法作用的对象按照租户隔离。 | |
| DROP VIEW | Y | 语法作用的对象按照租户隔离。 | |
| RENAME TABLE | Y | 语法作用的对象按照租户隔离。 | |
| TRUNCATE TABLE | Y | 语法作用的对象按照租户隔离。 | |
| 数据操作语句 | CALL | Y | 语法作用的对象按照租户隔离。 |
| DELETE | Y | 语法作用的对象按照租户隔离。 | |
| DO | Y-无区分 | 不涉及租户隔离。 | |
| EXCEPT子句 | N | TaurusDB不支持使用此语法。 | |
| HANDLER | Y | 语法作用的对象按照租户隔离。 | |
| IMPORT TABLE | N | 多租户模式下TaurusDB不支持该语法。 | |
| INSERT | Y | 语法作用的对象按照租户隔离。 | |
| INTERSECT子句 | N | TaurusDB不支持使用此语法。 | |
| LOAD DATA | Y | LOAD DATA LOCAL不受租户限制;非LOCAL方式需FILE权限,不建议授予普通租户用户FILE权限。 | |
| LOAD XML | Y | LOAD XML LOCAL不受租户限制;非LOCAL方式需FILE权限,不建议授予普通租户用户FILE权限。 | |
| 含有括号的表达式 | Y | 语法作用的对象按照租户隔离。 | |
| REPLACE | Y | 语法作用的对象按照租户隔离。 | |
| SELECT | Y | 语法作用的对象按照租户隔离。 | |
| 子查询 | Y | 语法作用的对象按照租户隔离。 | |
| TABLE | Y | 语法作用的对象按照租户隔离。 | |
| UPDATE | Y | 语法作用的对象按照租户隔离。 | |
| UNION子句 | Y | 语法作用的对象按照租户隔离。 | |
| VALUES | Y | 语法作用的对象按照租户隔离。 | |
| WITH(公共表表达式) | Y | 语法作用的对象按照租户隔离。 | |
| 事务和锁定语句 | START TRANSACTION、COMMIT和ROLLBACK语句 | Y-无区分 | 事务语句在多租户下无区分,行为与标准MySQL一致。 |
| 无法回滚的语句 | Y-无区分 | 无法回滚的语句在多租户下无区分,行为与标准MySQL一致。 | |
| 隐式提交的语句 | Y-无区分 | 隐式提交的语句在多租户下无区分,行为与标准MySQL一致。 | |
| SAVEPOINT、ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT语句 | Y-无区分 | SAVEPOINT语句在多租户下无区分,行为与标准MySQL一致。 | |
| LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语句 | N | 多租户模式下TaurusDB不支持该语法。 | |
| LOCK TABLES和UNLOCK TABLES | Y | LOCK TABLES按租户DATABASE隔离,仅可锁定同租户下的表。 | |
| SET TRANSACTION | Y-无区分 | SET TRANSACTION在多租户下无区分,行为与标准MySQL一致。 | |
| XA事务 | Y-无区分 | XA事务在多租户下无区分,行为与标准MySQL一致。 | |
| 复制语句:用于控制源服务器的SQL语句 | PURGE BINARY LOGS | Y | 普通租户用户需被授予SUPER或BINLOG_ADMIN权限方可执行。 |
| RESET MASTER | N | 多租户模式下TaurusDB不支持该语法。 | |
| SET sql_log_bin | Y | 普通租户用户需被授予SUPER或SYSTEM_VARIABLES_ADMIN或SESSION_VARIABLES_ADMIN权限方可执行。 | |
| 复制语句:用于控制副本服务器的SQL语句 | CHANGE MASTER TO | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 |
| CHANGE REPLICATION FILTER | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 | |
| CHANGE REPLICATION SOURCE TO | N | TaurusDB不支持CHANGE REPLICATION SOURCE TO语法,请使用CHANGE MASTER TO代替。 | |
| RESET REPLICA | N | 多租户模式下TaurusDB不支持该语法。 | |
| RESET SLAVE | N | 多租户模式下TaurusDB不支持该语法。 | |
| START REPLICA | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 | |
| START SLAVE | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 | |
| STOP REPLICA | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 | |
| STOP SLAVE | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 | |
| 复制语句:用于控制组复制的SQL语句。 | START GROUP_REPLICATION | Y | 普通租户用户需被授予SUPER或GROUP_REPLICATION_ADMIN权限方可执行。 |
| STOP GROUP_REPLICATION | Y | 普通租户用户需被授予SUPER或GROUP_REPLICATION_ADMIN权限方可执行。 | |
| 预处理语句 | PREPARE | Y | 语法作用的对象按照租户隔离。 |
| EXECUTE | Y | 语法作用的对象按照租户隔离。 | |
| DEALLOCATE PREPARE | Y | 语法作用的对象按照租户隔离。 | |
| 复合语句 | 复合语句 | Y | 语法作用的对象按照租户隔离。 |
| 数据库管理报表:账户管理报表 | ALTER USER | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的用户。 |
| CREATE ROLE | Y | CREATE ROLE在多租户模式下创建当前租户下的role。 | |
| CREATE USER | Y | 语法作用的对象按照租户隔离,创建的用户归属于当前租户。 | |
| DROP ROLE | Y | DROP ROLE在多租户模式下删除当前租户下的role。 | |
| DROP USER | Y | 语法作用的对象按照租户隔离,仅可删除同租户下的用户。 | |
| GRANT | Y | 语法作用的对象按照租户隔离,仅可授予同租户下的权限。 | |
| RENAME USER | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的用户。 | |
| REVOKE | Y | 语法作用的对象按照租户隔离,仅可撤销同租户下的权限。 | |
| SET DEFAULT ROLE | Y | SET DEFAULT ROLE在多租户模式下仅可设置当前租户下的role。 | |
| SET PASSWORD | Y | 语法作用的对象按照租户隔离,仅可修改同租户下的用户密码。 | |
| SET ROLE | Y | SET ROLE语句的作用对象在多租户模式下仅可设置当前租户下的role。 | |
| 数据库管理语句:资源组管理语句 | 资源组管理语句 | N | 暂不支持开启resource group。 |
| 数据库管理语句:表维护语句 | ANALYZE TABLE | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的表。 |
| CHECK TABLE | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的表。 | |
| CHECKSUM TABLE | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的表。 | |
| OPTIMIZE TABLE | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的表。 | |
| REPAIR TABLE | Y | 语法作用的对象按照租户隔离,仅可操作同租户下的表。 | |
| 数据库管理语句:组件、插件和可加载函数语句 | 可加载函数的CREATE FUNCTION语句 | Y | 拥有MySQL库中表的INSERT权限时支持使用该语句。但不建议授予租户下用户对应的权限。 |
| 可加载函数的DROP FUNCTION语句 | Y | 拥有MySQL库中表的DELETE权限时支持使用该语句。但不建议授予租户下用户对应的权限。 | |
| INSTALL COMPONENT | N | 多租户模式下TaurusDB不支持该语法。 | |
| INSTALL PLUGIN | N | 多租户模式下TaurusDB不支持该语法。 | |
| UNINSTALL COMPONENT | N | 多租户模式下TaurusDB不支持该语法。 | |
| UNINSTALL PLUGIN | N | 多租户模式下TaurusDB不支持该语法。 | |
| 数据库管理语句 | CLONE | N | 多租户模式下TaurusDB不支持该语法。 |
| 数据库管理语句:SET语句 | SET语法 | Y | 仅支持更改当前Session中的变量,全局变量需SYSTEM_VARIABLES_ADMIN权限。 |
| SET CHARACTER | Y-无区分 | SET CHARACTER在多租户下无区分,仅影响当前Session。 | |
| SET NAMES | Y-无区分 | SET NAMES在多租户下无区分,仅影响当前Session。 | |
| 数据库管理语句:SHOW语句 | SHOW BINARY LOGS | Y | 拥有SUPER或REPLICATION CLIENT权限的用户方可执行。 |
| SHOW BINLOG EVENTS | N | 需要REPLICATION_SLAVE权限,多租户模式下TaurusDB不支持该语法。 | |
| SHOW CHARACTER SET | Y-无区分 | SHOW CHARACTER SET在多租户下无区分。 | |
| SHOW COLLATION | Y-无区分 | SHOW COLLATION在多租户下无区分。 | |
| SHOW COLUMNS | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE DATABASE | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE EVENT | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE FUNCTION | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE PROCEDURE | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE TABLE | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE TRIGGER | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE USER | Y | 语法作用的对象按照租户隔离。 | |
| SHOW CREATE VIEW | Y | 语法作用的对象按照租户隔离。 | |
| SHOW DATABASES | Y | 语法作用的对象按照租户隔离,普通租户仅可见自己租户下的数据库。 | |
| SHOW ENGINE | Y | 仅当拥有PROCESS权限的用户支持使用该语句。但不建议对租户下的用户授予该权限。 | |
| SHOW ENGINES | Y-无区分 | SHOW ENGINES在多租户下无区分。 | |
| SHOW ERRORS | Y-无区分 | SHOW ERRORS仅显示当前Session的错误信息,在多租户下无区分。 | |
| SHOW EVENTS | Y | 使用SHOW EVENTS语句进行查询时,去除数据库和用户上的租户信息。 | |
| SHOW FUNCTION CODE | Y | 语法作用的对象按照租户隔离。 | |
| SHOW FUNCTION STATUS | Y | 语法作用的对象按照租户隔离。 | |
| SHOW GRANTS | Y | 查看自身权限无需SELECT权限;查看其他用户权限需mysql.user表的SELECT权限。 | |
| SHOW INDEX | Y | SHOW INDEX语句的作用对象按租户DATABASE隔离。 | |
| SHOW MASTER STATUS | Y | 拥有SUPER或REPLICATION CLIENT权限的用户方可执行。 | |
| SHOW OPEN TABLES | Y | SHOW OPEN TABLES语句的作用对象按租户DATABASE隔离。 | |
| SHOW PLUGINS | Y-无区分 | SHOW PLUGINS在多租户下无区分。 | |
| SHOW PRIVILEGES | Y-无区分 | SHOW PRIVILEGES在多租户下无区分。 | |
| SHOW PROCEDURE CODE | Y | 语法作用的对象按照租户隔离。 | |
| SHOW PROCEDURE STATUS | Y | 语法作用的对象按照租户隔离。 | |
| SHOW PROCESSLIST | Y | SHOW PROCESSLIST语句的作用对象按租户USER隔离,普通租户仅可看到自己租户下的线程。 | |
| SHOW PROFILE | Y-无区分 | SHOW PROFILE在多租户下无区分。 | |
| SHOW PROFILES | Y-无区分 | SHOW PROFILES在多租户下无区分。 | |
| SHOW RELAYLOG EVENTS | N | 多租户模式下TaurusDB不支持该语法。 | |
| SHOW REPLICAS | N | 多租户模式下TaurusDB不支持该语法。 | |
| SHOW SLAVE HOSTS | SHOW REPLICAS | N | 多租户模式下TaurusDB不支持该语法。 | |
| SHOW REPLICA STATUS | Y | 拥有SUPER或REPLICATION CLIENT权限的用户方可执行。 | |
| SHOW SLAVE | REPLICA STATUS | Y | 拥有SUPER或REPLICATION CLIENT权限的用户方可执行。 | |
| SHOW STATUS | Y-无区分 | SHOW STATUS在多租户下无区分。 | |
| SHOW TABLE STATUS | Y | 语法作用的对象按照租户隔离。 | |
| SHOW TABLES | Y | 语法作用的对象按照租户隔离,普通租户仅可见自己租户下的表。 | |
| SHOW TRIGGERS | Y | 语法作用的对象按照租户隔离。 | |
| SHOW VARIABLES | Y-无区分 | SHOW VARIABLES在多租户下无区分。 | |
| SHOW WARNINGS | Y-无区分 | SHOW WARNINGS仅显示当前Session的警告信息,在多租户下无区分。 | |
| 数据库管理语句:其他声明 | BINLOG | Y | 普通租户用户需被授予SUPER或BINLOG_ADMIN权限方可执行。 |
| CACHE INDEX | Y | 语法作用的对象按照租户隔离。 | |
| FLUSH | N | 多租户模式下TaurusDB不支持该语法。 | |
| KILL | Y | 语法作用的对象按照租户隔离,普通租户只能看到和终止自己租户下的线程。 | |
| LOAD INDEX INTO CACHE | Y | LOAD INDEX INTO CACHE语句的作用对象按租户DATABASE隔离。 | |
| RESET | N | 多租户模式下TaurusDB不支持该语法。 | |
| RESET PERSIST | N | 受权限控制限制,仅系统租户用户可执行。 | |
| RESTART | N | 多租户模式下TaurusDB不支持该语法。 | |
| SHUTDOWN | N | 多租户模式下TaurusDB不支持该语法。 | |
| 实用程序语句 | DESCRIBE | Y | 语法作用的对象按照租户隔离。 |
| EXPLAIN | Y | 语法作用的对象按照租户隔离。 | |
| HELP | Y-无区分 | HELP在多租户下无区分。 | |
| USE | Y | 语法作用的对象按照租户隔离,普通租户仅可切换到自己租户下的数据库。 | |
| TaurusDB新增 | CALL dbms_outln.* | Y | 查询类(dbms_outln.show_outline/preview_outline)无权限限制;管理类(dbms_outln.add_index_outline/add_optimizer_outline/flush_outline/del_outline)需SUPER权限或root用户。 |
| SHOW PBS STATUS | Y-无区分 | 无权限限制,普通租户用户可执行。 | |
| SHOW REPLICA STATUS USING REDO | Y | 普通租户用户需被授予SUPER或REPLICATION CLIENT权限方可执行。 | |
| SHOW SLOWIO STATUS | Y-无区分 | 普通租户用户可执行。 | |
| CHANGE MASTER USING REDO | Y | 普通租户用户需被授予SUPER或REPLICATION_SLAVE_ADMIN权限方可执行。 | |
| SHOW SLICEID | Y-无区分 | 无权限限制,普通租户用户可执行。 | |
| SHOW SPACEUSAGE | Y-无区分 | 无权限限制,普通租户用户可执行。 | |
| CALL dbms_recyclebin.* | Y | 回收站功能支持多租户,数据库名自动附加租户后缀。 | |
| CALL dbms_recyclebin.show_tables() | Y-无区分 | 无权限限制,普通租户用户可执行。 | |
| SHOW LSNINFO | Y-无区分 | 普通租户用户可执行。 | |
| CALL dbms_sqlfilter.* | Y | 查询类(dbms_sqlfilter.show_sql_filter)无权限限制;管理类(dbms_sqlfilter.add_sql_filter/del_sql_filter/flush_sql_filter)需SUPER权限。 | |
| RDS_TAC | N | 多租户模式下TaurusDB不支持该语法。 | |
| CALL dbms_xxx.* | Y | NATIVE PACKAGE在多租户模式下支持,各子包的权限要求不同,查询类通常无权限限制,管理类需SUPER权限。 | |
| SHOW GLOBAL REPLICA STATUS | Y | 普通租户用户需被授予SUPER或REPLICATION CLIENT权限方可执行。 | |
| RDS_GDB_CTRL | N | 多租户模式下TaurusDB不支持该语法。 |