• 读书笔记-Mycat权威指南-08-Mycat中的Join


    Join

    Join 绝对是关系型数据库中最常用一个特性,然而在分布式环境中,跨分片的 join 确是最复杂的,最难解决一 个问题。

    Join:inner ,left,right,full,cross

    尽量避免使用 Left join 或 Right join,而用 Inner join。

    在使用 Left join 或 Right join 时,ON 会优先执行,where 条件在最后执行,所以在使用过程中,条件尽 可能的在 ON 语句中判断,减少 where 的执行少用子查询,而用 join。

    Mycat 目前版本支持跨分片的 join,主要实现的方式有四种:全局表,ER 分片,catletT(人工智能)和 ShareJoin,ShareJoin 在开发版中支持,前面三种方式 1.3.0.1 支 持。

    全局表

    各个分片冗余存储

    ER分片

    将子表的存储位置依赖于主表,并且物理上紧邻存放,因此彻底解决了 JION 的效率和性能问题。

    根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分 片上。

    Share Join

    ShareJoin 是一个简单的跨分片 Join,基于 HBT 的方式实现。 原理就是解析 SQL 语句,拆分成单表的 SQL 语句执行,然后把各个节点的数据汇 集。

    catlet(人工智能)

    解决跨分片的 SQL JOIN 的问题,远比想象的复杂,而且往往无法实现高效的处理。

    既然如此,就依靠人工 的智力,去编程解决业务系统中特定几个必须跨分片的 SQL 的 JOIN 逻辑。

    MyCAT 提供特定的 API 供程序员调用,这就是 MyCAT 创新性的思路——人工智能。

    以一个跨节点的 SQL 为例。 Select a.id,a.name,b.title from a,b where a.id=b.id 其中 a 在分片 1,2,3 上,b 在 4,5,6 上,需要把数据全部拉到本地(MyCAT 服务器),执行 JOIN 逻辑。

  • 相关阅读:
    ListComparer
    C#.net中类与结构的区别
    对C# 中堆栈,堆,值类型,引用类型的理解
    一道面试题
    Mvc不等于三层架构
    SQL养成一个好习惯是一笔财富
    清除MSSQL事务日志文件
    面向对象设计(OOD)五大基本原则
    .net/c#中栈和堆的区别及代码在栈和堆中的执行流程详解之一
    IIS7 Login failed for user IIS APPPOOL\ASP.NET v4.0
  • 原文地址:https://www.cnblogs.com/shizheyangde/p/7434892.html
Copyright © 2020-2023  润新知