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

本文深入探讨DBLE如何实现MySQL视图功能,包括视图概念、MySQL与DBLE的实现方式对比,以及可下推与不可下推的场景分析。

作者:苏仕祥

浩鲸科技 PaaS 组件团队成员,长期从事分库分表中间件的相关解决方案工作,热爱技术,乐于分享。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


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

 

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

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

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

MySQL 中通过两种算法来实现视图功能,分别称为合并算法(MERGE)临时表算法(TEMPTABLE)

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

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

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

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

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

 

二、DBEL 对视图的实现

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

  • 可下推:DBLE 直接将视图相关 SQL 下推到后端 MySQL 执行,DBLE 端只保存视图相应元数据信息。

  • 不可下推:DBLE 会在逻辑层面实现视图,然后当执行视图相应查询 SQL 的时候,在将相应查询 SQL 与视图 SQL 合并后执行,这里就相当于 MySQL 中的合并算法了。

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

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

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

 

 

总结

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

【Unity大世界场景管理插件】World Streamer 2,World Streamer 2 是 World Streamer 的升级版本,进一步优化了处理大型和复杂场景的能力。插件将场景分割成多个块,并根据玩家的当前位置自动加载和卸载这些块,从而实现开放世界的无缝衔接和高效性能管理。这使得它成为开放世界、虚拟现实(VR)、增强现实(AR)、模拟游戏等需要高效场景管理的项目的理想工具。主要功能无缝流式加载:插件支持分块加载和卸载场景,确保场景的无缝衔接,减少场景切换时的卡顿和加载时间。多线程支持:利用多线程技术,将流式加载和卸载任务分配到多个线程中,减轻主线程的负担,进一步优化游戏性能。LOD(细节层次)管理:支持基于距离的细节层次(LOD)管理,能够根据玩家距离自动调整模型和地形的细节级别,有效减少不必要的渲染压力。多层场景支持:可同时管理地上、地下、空中等多层次场景,为复杂场景(如地道、地下城、摩天大楼)提供无缝加载解决方案。自动场景分块:提供自动分块工具,可以将大型场景快速划分为多个小块,便于动态加载和优化。远程流式加载:支持从远程服务器流式加载场景块,适合大型在线游戏和需要动态更新内容的项目。VR/AR 优化:特别优化了 VR 和 AR 项目的流式处理,确保在高需求的沉浸式场景中依然保持高性能。海量物体支持:能够处理数百万个对象的流式加载,适用于非常复杂和详细的大型开放世界。灵活的触发系统:支持基于触发器、视野、时间等多种方式触发场景块的加载和卸载,自定义灵活度高。与其他插件兼容:兼容 Unity 的地形工具、导航网格、物理引擎等,还可与第三方插件(如 Gaia、CTS、Vegetation Studio Pro)集成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值