使用限制

最近更新时间: 2024-10-17 17:10:00

TDSQL分布式实例中所编写的SQL语句中凡是包含shardkey、parition、distributed by等关键字的会交由proxy处理,语句的剩余部分会发送到DB, 按照MYSQL语法执行。所有TDSQL分布式SQL不支持使用DELAYED和LOW_PRIORITY,不支持对于变量的引用和操作,比如 SET @c=1, @d=@c+1; SELECT @c, @d等。具体限制项请参考以下两小节。

TDSQL大类限制

  • 不支持自定义函数、事件、表空间

  • 不支持触发器、游标

  • 不支持外键

  • 不支持复合语句,例如:BEGIN END,LOOP,UNION的语句

  • 不支持主备同步相关的SQL语言

  • 分区需使用TDSQL分区语法建立分区

TDSQL小语法限制

TDSQL分布式实例不支持DDL、DML、管理SQL语言的部分语法,具体限制如下:

  • DDL

    • 不支持CREATE TABLE ... SELECT

    • 不支持CREATE/DROP/ALTER SERVER

    • 不支持CREATE/DROP/ALTER LOGFILE GROUP

    • 不支持ALTER对分表键进行改名,但可以修改类型

    • 不支持RENAME

  • DML

    • 不支持SELECT INTO OUTFILE/INTO DUMPFILE/INTO var_name

    • 不支持query_expression_options,如:HIGH_PRIORITY/STRAIGHT_JOIN/SQL_SMALL_RESULT/SQL_BIG_RESULT/SQL_BUFFER_RESULT/SQL_CACHE/SQL_NO_CACHE/SQL_CALC_FOUND_ROWS

    • 不支持窗口函数

    • 不支持非SELECT的子查询

    • 不支持不带列名的INSERT/REPLACE

    • 不支持不带WHERE条件的UPDATE/DELETE

    • 不支持LOAD DATA/XML

    • 不支持SQL中使用DELAYED和LOW_PRIORITY

    • 不支持SQL中对于变量的引用和操作,比如 SET @c=1, @d=@c+1; SELECT @c, @d

    • 不支持INDEX_HINT

    • 不支持HANDLER/DO

  • 管理SQL语句

    • 不支持ANALYZE/CHECK/CHECKSUM/OPTIMIZE/REPAIR TABLE,需要用透传语法

    • 不支持CACHE INDEX

    • 不支持FLUSH

    • 不支持LOAD INDEX INTO CACHE

    • 不支持RESET

    • 不支持SHUTDOWN

    • 不支持SHOW BINARY LOGS/BINLOG EVENTS

    • 不支持SHOW WARNINGS/ERRORS和LIMIT/COUNT的组合