文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

分布式 | DBLE 是如何实现视图的?

2014-11-17 15:39

关注

分布式 | DBLE 是如何实现视图的?

作者:苏仕祥 浩鲸科技 PaaS 组件团队成员,长期从事分库分表中间件的相关解决方案工作,热爱技术,乐于分享。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


本文主要讲解 DBLE 是如何实现 MySQL 视图功能的,内容包括 MySQL 视图相关概念、MySQL 对视图的实现,以及 DBLE 对视图的实现。

一、MySQL 视图概念及 MySQL 中视图的实现

MySQL 5.0 版本开始引入视图。视图本身是一个虚拟表,不存放任何数据。在使用 SQL 语句访问视图的时候,它返回的数据是 MySQL 从其他表中生成的。

MySQL 中对于视图是如何实现的呢?

分别称为 合并算法(MERGE)临时表算法(TEMPTABLE)

如下图所示(图片出自《高性能 MySQL》):

合并算法 就是将视图 SQL 和查询 SQL 合并,然后执行查询,可以看到如果我们通过视图来简化 SQL,其实在 MySQL 底层又给我们转换了过来。

临时表算法 就是在执行查询的时候,定义的视图会先生成对应的临时表,然后服务器基于该临时表执行相应的查询。

那么 MySQL 究竟会使用哪种算法呢?

如果在创建视图的时没有显示指定算法,MySQL 会尽可能的使用合并算法。如果视图中包含 GROUP BY、DISTINCT、任何聚合函数、UNION、子查询等,只要无法在原表记录和视图记录中建立一一映射的场景中,MySQL 都会使用临时表算法来实现视图(当然这些规则可能随着 MySQL 的版本更新发生变化)。想要确定 MySQL 究竟使用何种算法,可以 EXPLAIN 一条针对视图的简单查询,如果 select_type为"DERIVED",则为临时表算法。

二、DBEL 对视图的实现

DBLE 对视图的实现主要分为两种情况,一种是可下推,另一种为不可下推

那么可下推或不可下推的情况是如何判断的呢?

通过判断相应的逻辑 schema 是不是 nosharding(nosharding 表示 schema 中没有表配置)。如果是 nosharding 则可下推,否则不可下推。其实这里可以看出来,可下推的情况可能比较少出现。

DBLE 对视图的实现详情如下图所示:

DBLE 视图功能实现

总结

本文主要讲解了 DBLE 是如何实现 MySQL 视图的,内容包括 MySQL 视图相关概念、MySQL 对视图的实现,以及 DBLE 对视图的实现,希望对大家理解 DBLE 的视图实现有所帮助。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯