TDSQL-MYSQL版 单表如何使用存储过程

2021-04-23 17:54:18 浏览数 (1)

tdsql支持3种表:

单表

表结构与数据只存在于第一个set上. 使用和普通mysql完全一样.

分表

对分表键(shardkey)做murmurHashCodeAndMod运算, 数据均匀分布在每个set上(这个说法其实不严谨)

广播表

每个set上都有完整的表数据. 做join的时候方便.

语法: https://cloud.tencent.com/document/product/557/8767

官方说tdsql-mysql不支持存储过程

看起来很多特性都不支持...看起来很多特性都不支持...

对分表创建存储过程:

会报错Shard table do not support create_or_replace view会报错Shard table do not support create_or_replace view

对单表创建存储过程

其实实际使用单表的场景不多的, 也不建议使用单表.

可以创建成功

创建存储过程成功创建存储过程成功

但是无法直接调用存储过程

网关(proxy)不支持直接调用, 为啥不支持呢?

不支持call不支持call

绕过网关调用存储过程

网关(proxy)不支持, 但是底层是mysql, mysql是支持的啊, 所以我们可以直接到set上去执行.

其实这一点可以官方改进的.

查看后台set信息

1. sql透传查看

2. 控制台点鼠标

然后把sql发往对应的set上执行即可(单表是第一个set).

这样是可以的, 但是不建议这么做.

没想到吧, 透传sql还能用来这么干没想到吧, 透传sql还能用来这么干

思考一下: 如果我先创建存储过程, 再创建分表, 再透传sql调用存储过程行不行?

答案:不行

对广播表创建存储过程

也是不支持的,

其实也可以使用透传sql, 每个set都创建相同的存储过程, 调用的时候透传到每个set上执行.

结论:

tdsql-mysql版不支持创建存储过程(单表除外), 不支持调用存储过程.

但是单表可以使用sql透传调用存储过程.

题外话:

恭喜自己获得数据库交付运维专家-腾讯云TDSQL(MySQL版)证书^_^

0 人点赞