微课程 | 第十一课《Hint 简介和演示》

2020-08-03T06:36:08
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

https://v.youku.com/v_show/id...

前几期我们介绍了 Global 表和 ER 表,除此之外 DBLE 还提供了 hint 来指定路由的功能。

什么是 Hint

我们先介绍一下 hint,hint 是一种有效注释,将业务应用指定一个分库,实现中间件可以用指定的方式去下发 SQL。基本上是这样的,hint 里面是有一个路由的结果,比如我这里面 ID=1。通过拆分算法求模,我知道 ID=1 会下发给哪个库,但是真正的执行的 SQL 是另外一种 SQL,这里面这个 SQL 也不是很好,但是能表达功能。通过 hint 来计算路由,然后计算好路由以后下发的是另外一条我想下发的语句。

我们举一个例子。
比如说 insert xx select * from xxx 现在 DBLE 是不支持的,但是我们可以通过 hint 这种方式来实现。所以 hint 目的就是指定路由结果,但实际执行的是 SQL 的内容。

Hint 的分类

DBLE 的 hint 一共分这几种(如图),一个是通过 SQL 来计算路由。一个是直接指明了我要下发的节点。第三种和我们之前说的有点不一样,就是在读写分离中,我强制要求我的 select 强制走主节点,也可以通过 hint 这种方式来指定的。

操作演示

https://v.youku.com/v_show/id...

我们用 hint 演示存储过程这样一个例子。我们还是通过 MySQL 的 DBLE 应用端入口。我们去看一下 tb_mod 这张表,看到有 5 行数据,比如说现在场景是我想删掉某一个节点上的数据。当然你可以通过写 SQL 的方式来,但是我们这个例子主要展现一个能力:我的某个存储过程在某个节点上建立以后我怎么去用 hint 调用它。
过程就很简单,其实就是 delete from tb_mod 。但是它前面有一个有一个 hint 操作,指到 tb_mod=1这里。然后我执行一下这个存储过程 call 命令。执行成功后,1 和 5 这两条数据已经被删掉了。这样我们可以通过指定某个节点执行一些我们没办法在 DBLE 层面上做的事情,作为我们普通的一个 DBLE 支持的语法的扩展。类似 insert select from table 等等语句都可以通过这种方式来执行。

好,我们今天先介绍到这里。

图文稿为了方便阅读,在不影响学习的情况下优化了一些口语化词汇,文稿与视频会尽量保持一致。
扫一扫关注公众号添加购物返利助手,领红包
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »
因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合MIP标准。