首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库中间件 MyCAT源码分析——跨库两Join

概述 MyCAT 支持跨库 Join,目前版本仅支持跨库两 Join。虽然如此,已经能够满足我们大部分的业务场景。况且,Join 过多的可能带来的性能问题也是很麻烦的。...本文主要分享: 整体流程、调用顺序图 核心代码的分析 前置阅读:《MyCAT 源码分析 —— 【单库单】查询》。 OK,Let's Go。 2....tName :名 tAlia :自定义命名 where :过滤条件 order :排序条件 parenTable :左连接的 Join 的名。...t_user 在 join属性 为 id。 join :子 tableFilter。即,该连接的右边的。 parent :和 join属性 相对。...即使 join 左的字段未声明为返回 fields 也会返回。 恩,MyCAT 弱XA 源码继续走起!

2.1K80
您找到你想要的搜索结果了吗?
是的
没有找到

数据库中间件 MyCAT源码分析:【单库单】插入

本文讲解 【单库单】插入 所涉及到的代码。交互如下图: ? 单库单插入简图 整个过程,MyCAT Server 流程如下: 接收 MySQL Client 请求,解析 SQL。...我们逐个步骤分析,一起来看看源码。 2. 接收请求,解析 SQL ? 【单库单】插入(01主流程) 【 1 - 2 】 接收一条 MySQL 命令。...省略代码 13: 14: // 路由到后端数据库,执行 SQL 15: routeEndExecuteSQL(sql, type, schema); 16:...【单库单】插入(02获取路由) 【 1 - 2 】【 12 】 获得路由主流程。...【单库单】插入(03执行 SQL) 【 1 - 8 】 获得 MySQL 连接。 PhysicalDBNode :物理数据库节点。 PhysicalDatasource :物理数据库数据源。

1.3K120

数据库中间件 MyCAT 源码分析 —— 【单库单】查询

本文讲解 【单库单】查询 所涉及到的代码。 ?内容和 《MyCAT 源码分析 —— 【单库单】插入》 超级相似,一方面本身流程基本相同,另外一方面文章结构没拆分好。我们使用 ? 标记差异的逻辑。...我们逐个步骤分析,一起来看看源码。 2. 接收请求,解析 SQL ? 【单库单】查询(01主流程) 【1 - 2】 接收一条 MySQL 命令。...【单库单】插入(02获取路由) 【 1 - 5 】 获得路由主流程。...【单库单】查询(03执行 SQL) 【 1 - 8 】 获得 MySQL 连接。 PhysicalDBNode :物理数据库节点。 PhysicalDatasource :物理数据库数据源。...其他 :更新 / 删除 流程基本和 《MyCAT源码分析:【单库单】插入》 相同。我们就不另外文章解析。

1.5K90

【redis源码学习】跳跃

文章目录 跳表整体概览 跳跃节点 跳跃结构 创建跳跃 随机数获取 创建跳跃结构 创建跳跃节点 插入节点 删除节点 删除整 跳表整体概览 1、由多层构成。...} zskiplistNode; ---- 跳跃结构 链表都是有结构 + 节点 组成的,跳跃表出自链表,自然也有结构。...创建跳跃节点 初始化操作总是那么的平平无奇哈。后面的增删改查才是重头戏!!!...删除整 这里的英文解释挺详尽的了,代码也很清晰。从第0层开始,通过forward向后遍历,一个一个回收内存。节点都回收完了,再回收结构。...大家都是按部就班的,字符串,压缩,哈希。。。。我反而觉得压缩不如跳跃来的有意思哈哈。

41220

Oracle数据库 连接与设计

用于定位数据库中一条记录的一个 相对唯一地址值。通常情况下,该值在该行数据插入到数据库时即被确定且唯一。 ROWID 它是一个伪列,它并不实际存在于中。...数据库的大多数操作都是 通过 ROWID 来完成的,而且使用 ROWID 来进行单记录定位速度是最快的。我们可以将其用于删除重复数据。...1开始,依次+1 --优点: 有规律,规律可循,是数字,可以进行判断和分页操作 rownum :1)必须排序 2)不能直接取大于 1 的数 举个栗子: --最底层 rownum 数据库默认顺序号...sys用户 -- 进行授权:grant dba to scott; -- 回收:revoke dba from scott; grant dba to scott; (二)索引 索引是数据库对象之一...在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。

2.2K20

数据库之连查询_数据库怎么查询的内容

3.自连接 如果在一个连接查询中,涉及到的两个是同一个,这种查询称为自连接查询。...外连接 内连接只返回满足连接条件的数据行,外连接不只列出与连接条件相匹配的行,而是列出左(左外连接时)、右(右外连接时)或两个(全外连接时)中所有符合搜索条件的数据行。...1.左外连接 关键字:LEFT[OUTER]JOIN 返回左中的所有行,如果左中行在右中没有匹配行,则在相关联的结果集中右的所有字段均为NULL。...2.右外连接 关键字:RIGHT[OUTER]JOIN 返回右中的所有行,如果右中行在左中没有匹配行,则在左中相关字段返回NULL值。...交叉连接/笛卡尔积 关键字:CROSS JOIN 两个做笛卡尔积,得到的结果集的行数是两个中的行数的乘积。 实践能让你快速理解。

5.6K20

Gorm 数据库迁移与模型定义

介绍 AutoMigrate 是 Gorm 提供的一个功能强大的数据库迁移工具,它可以自动创建或更新数据库结构,使数据库的结构与 Golang 模型一致。...使用 AutoMigrate 可以方便地进行数据库的初始化和更新,而无需手动执行 SQL 语句。...2.2 AutoMigrate 基本使用 在 Gorm 中,你可以通过调用 db.AutoMigrate 方法来进行数据库的自动迁移。...在使用指定数据库数据类型时,它需要是完整的数据库数据类型,如:MEDIUMINT UNSIGNED not NULL AUTO_INCREMENT serializer 指定如何将数据序列化和反序列化到数据库中的序列化程序...= nil { panic(err) // 如果数据库不存在会报错 } db.AutoMigrate(&Teacher{}) // 如果之前存在会修改,但是只会修改之前存在的字段,有问题

28510

MySQL 数据库分区.

MySQL 数据库在 5.1 版本时添加了对分区(partitioning)的支持。分区的过程是将一个或索引分解成多个更小、更可管理的部分。...就访问数据库的应用而言,从逻辑上来讲,只有一个或一个索引,但是在物理上这个或索引可能由数十个物理分区组成。...MySQL 数据库支持的分库类型为水平分区(指将同一中不同行的记录分配到不同的物理文件中),并不支持垂直分区(指将同一中不同列的记录分配到不同的物理文件中)。...MySQL 查看数据库分区。 SHOW VARIABLES LIKE '%partitions%'; MySQL 数据库支持以下几种类型的分区。...我们通过 Navicat 来操作下数据库分区, -> 右键点击'设计' -> 选项 -> 分割区,可以看到如下内容。 ? 来看看分区后,磁盘中 MySQL 数据库是怎么存储的。 ?

9.1K20

数据库操作

什么是 (TABLE) 是一种结构化的文件,可用来存储某种特定类型的数据。中的一条记录有对应的标题,标题 称之为 的字段。...desc 名;例: desc student; #查看创建信息show create table student;   修改结构 #添加表字段alter table 名 add 字段名 类型 约束...table alter 字段 drop default; 默认值操作 删除 #删除drop table 名; #清空truncate table 名;  复制表 #只复制表结构和中数据...SELECT * FROM tb1;ps:主键自增/索引/触发器/外键 不会 被复制 #只复制表结构create table tb2 like tb1;ps: 数据/触发器/外键 不会被复制  七 数据库存储引擎...因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡 text text数据类型用于保存变长的大字符串,可以最多到65535

42720

MySQL 搭建数据库

创建MySQL数据需要以下信息: 名 表字段名 定义每个表字段 语法 以下为创建MySQL数据的SQL通用语法: CREATE TABLE table_name (column_name column_type...); 以下例子中我们将在 RUNOOB 数据库中创建数据runoob_tbl: CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` INT...KEY ( `runoob_id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 实例解析: 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为...---- 通过命令提示符创建 通过 mysql> 命令窗口可以很简单的创建MySQL数据。你可以使用 SQL 语句 CREATE TABLE 来创建数据。...使用PHP脚本创建数据 你可以使用 PHP 的 mysqli_query() 函数来创建已存在数据库的数据。 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

10.4K10

Access数据库初识

二、Excel和Access的区别 上面提到的问题,在使用Excel时通常被忽略,因为小范围录入的数据可以通过有效性验证或者人工审核去找出错误,而分析数据时使用大规模的数据通常是从数据库导出的,从数据库导出的数据都相对规范严谨...下图是创建数据库进去的默认状态。是快捷建新后的界面。(中不像excel中有行号和列号等) ? ?...在Access数据库中数据对应的表头是必须的,并且有新称谓叫做字段。同一列中的值都属于该字段的内容(不像Excel中即使同一列,也可能还有其他不同的数据或者公式等内容。)...5、主键 下面是一个新的概念:主键,即主关键字的意思,新接触Access数据库的童鞋很容易出错,在Access中添加了字段后,必须选择符合条件的字段作为主键。(可以不是一个字段。)...6、元组 上面介绍了Access中每列的表头被称为字段,那么每一行数据库的记录就被成为元组。如下图所演示每个字段下添加对应的值后,构成了一行数据库的记录,即元组。 ? ?

4.8K20

Activiti之数据库

Activiti一共有24张 以 ACT_ 开头 一,1.act_evt_log 事件日志 流程部署涉及的: 二, 通用数据 act_ge_* ge代表general 通用的 一般的 2.... act_ge_bytearray 通用流程定义和流程资源 3. act_ge_property  属性数据 三,资源库流程规则 act_re_*    re代表repository...流程定义(常用) 流程运行涉及的: 四,运行时数据库  act_ru_* : ru代表runtime 存储运行时的流程变量 用户任务 变量 作业 等数据 7. act_ru_event_subscr...运行时定时任务数据 11. act_ru_task 运行时的任务(常用) 12. act_ru_variable 运行时的参数变量表(常用) 流程历史涉及的: 五,历史数据库...流程角色涉及的 21. act_id_group 用户组 22. act_id_info 用户扩展信息 23. act_id_membership 用户与用户组关联

37720

数据库分区

数据库分区(一)什么情况下需要分区,准备需要分区的数据 什么数据库需要进行分区?...改善数据库的结构有两种,一种是采用存储过程代替普通的SQL语句,另外一种就是使用数据库系统中增强索引和规划分区进行优化,这里我们采用第二种方案来解决问题。...我们这里采用数据分区的方法来进行数据优化,那么是不是只要数据量足够大之后就要进行数据库分区来提高查询效率呢?...如果你有一个刚刚备份过来的数据库,就是还原不成功怎么办?这里有解决方案。 数据库分区(二)什么是分区?  分区分为水平分区和垂直分区。水平分区将分为多个。每个包含的列数相同,但是行更少。...数据库分区(四)将普通转换成分区 2011-02-15 16:27:43| 分类: 数据库学习 | 标签: |字号大中小 订阅   我们的数据库已经投入使用一段时间了,但是当时没有创建创建分区

2.4K30
领券