美文网首页
阿里云DRDS使用限制

阿里云DRDS使用限制

作者: bluexiii | 来源:发表于2017-07-31 19:25 被阅读358次

以下大部分内容非原创,整理自阿里云官方文档

SQL大类限制

  • 暂不支持用户自定义数据类型、自定义函数。
  • 暂不支持视图、存储过程、触发器、游标。
  • 暂不支持 BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE 等复合语句。
  • 暂不支类似 IF ,WHILE 等流程控制类语句。

DDL限制

  • CREATE TABLE tbl_name LIKE old_tbl_name 不支持拆分表。
  • CREATE TABLE tbl_name SELECT statement 不支持拆分表。

数据库管理限制

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

DML限制

  • 暂不支持 SELECT INTO OUTFILE/INTO DUMPFILE/INTO var_name。
  • 暂不支持 INSERT DELAYED Syntax。
  • 暂不支持非 WHERE 条件的 Correlate Subquery。
  • 暂不支持 SQL 中带聚合条件的 Correlate Subquery。
  • 暂不支持 SQL 中对于变量的引用和操作,比如 SET @c=1, @d=@c+1; SELECT @c, @d。

关于 Correlated Subquery 的解释:
Correlated Subquery is a sub-query that uses values from the outer query. In this case the inner query has to be executed for every row of outer query.
See example here http://en.wikipedia.org/wiki/Correlated_subquery
Simple subquery doesn't use values from the outer query and is being calculated only once:

SELECT id, first_name
FROM student_details
WHERE id IN (SELECT student_id
FROM student_subjects
WHERE subject= 'Science');

分析

DDL限制、数据库管理限制,由于与应用关系不大,编码时无须特别关心。
SQL大类限制,如视图、存储过程、触发器、游标等,通常是不被提倡的坏味道,如果有的话,直接改方式实现即可。
DML限制,需要特别注意。如果使用ORM,应该不会有太大问题,但用jdbcTemplate写原生SQL的话(如实时报表类的功能点)有可能会踩坑。
另外默认不支持跨实例事务,私有云貌似也没有GTS选项,需要在代码层面进行优化。

DML错误示例

select * from (select id,name from normal_tables) t

[b8040ac9f401000][192.168.2.47:3306][dev_sc_dmanage]ERR-CODE: [TDDL-4007][ERR_CANNOT_FETCH_TABLE_META] Table 'normal_tables' metadata cannot be fetched because Table 'dev_sc_dmanage_ssiu_0000.normal_tables' doesn't exist. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4007]

select a,*,b.* from shard_table a
left join (select id,name from normal_table) b on b.id=a.id;

[b80405010801000][192.168.2.47:3306][dev_sc_dmanage]column: a is not existed in either null or select clause

select a,*,b.* from normal_tables a
left join (select id,name from shard_table) b on b.id=a.id;

[b8040692c001000][192.168.2.47:3306][dev_sc_dmanage]ERR-CODE: [TDDL-4007][ERR_CANNOT_FETCH_TABLE_META] Table 'normal_tables' metadata cannot be fetched because Table 'dev_sc_dmanage_ssiu_0000.normal_tables' doesn't exist. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4007]

insert into group_seq_tbl (name) values ('hello');
insert into group_seq_tbl (name) values ('hello');

[b807dfe12c01000-24][192.168.2.47:3306][dev_sc_dmanage]ERR-CODE: [TDDL-4603][ERR_ACCROSS_DB_TRANSACTION] Transaction accross db is not supported in current transaction policy, transaction node is: DEV_SC_DMANAGE_1501040729564NYQSDEV_SC_DMANAGE_SSIU_0003_RDS, but this sql execute on: DEV_SC_DMANAGE_1501040729564NYQSDEV_SC_DMANAGE_SSIU_0006_RDS. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4603]

相关文章

  • 阿里云DRDS使用限制

    以下大部分内容非原创,整理自阿里云官方文档 SQL大类限制 暂不支持用户自定义数据类型、自定义函数。 暂不支持视图...

  • DRDS 柔性事务漫谈

    DRDS是阿里云提供的一款分布式数据库产品,它的原型是在阿里内部使用了 10 年的数据库中间件 TDDL。DRDS...

  • 阿里云DRDS 5.3 性能提升300%,比速超跑

    近日,阿里云发布了第三代DRDS分布式SQL引擎,即DRDS(阿里云分布式关系型数据库服务)5.3 版本 ,相较于...

  • 阿里云DRDS Sequence

    以下大部分内容非原创,整理自阿里云官方文档 DRDS Sequence简介 DRDS 全局唯一数字序列(64 位数...

  • DRDS应用开发指南

    最近根据多个应用使用阿里云 DRDS 产品状况,做了一个入门攻略。因为文档较多,全部看完需要时间,所以挑选了一些重...

  • 阿里云数据库组件记录

    最近用到许多阿里云的数据库组件,容易搞混每个组件的功能,在这里记录一下 分布式关系型数据库 DRDS DRDS 是...

  • 阿里云DRDS分库分表

    以下大部分内容非原创,整理自阿里云官方文档 单库单表 建一张单库单表,不做任何拆分。 分库不分表 假设已经建好的分...

  • 如宝马3系和5系:PolarDB-X 与 DRDS 并驾齐驱

    作者:梦实 DRDS,其本质是搭建在标准MySQL(阿里云上的RDS For MySQL)上的分库分表中间件,具有...

  • 阿里云RDS&DRDS初探

    简介 RDS 阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定...

  • 针对数据库连接池到DRDS连接探活的优化

    简介: 针对数据库连接池到DRDS连接探活的优化 作者:刘维 本文为阿里云原创内容,未经允许不得转载

网友评论

      本文标题:阿里云DRDS使用限制

      本文链接:https://www.haomeiwen.com/subject/togrlxtx.html