Mycat(13):全局表和普通表的配置和测试

news2025/2/2 12:55:40

1 全局表概述

一个真实的业务系统中,往往存在大量的类似字典表的表格,它们与业务表之间可能有关系,这种关系,可以理解为“标签”,而不应理解为通常的“主从关系”,这些表基本上很少变动,可以根据主键 ID进行缓存,下面这张图说明了一个典型的“标签关系”图: 

在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性: 

  • 变动不频繁 
  • 数据量总体变化不大 
  • 数据规模不大,很少有超过数十万条记录。

鉴于此,MyCAT定义了一种特殊的表,称之为“全局表”,全局表具有以下特性: 

  • 全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性 
  • 全局表的查询操作,只从一个节点获取 
  • 全局表可以跟任何一个表进行 JOIN操作 

将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据 JOIN的难题。

通过全局表+基于E-R关系的分片策略,MyCAT可以满足80%以上的企业应用开发。

 

2 配置方式

全局表配置比较简单,不用写Rule规则,如下配置即可: 

 修改schema.xml

 

测试

新建全局表

CREATE TABLE sys_global(
  id INT PRIMARY KEY ,
  `code` VARCHAR(30) ,
  codename VARCHAR(20) NOT NULL
);

查看sql的执行计划

查看插入的执行计划,如下:

EXPLAIN INSERT INTO sys_global(id,`code`,codename) VALUES(1,'sex:1','男');

 

EXPLAIN INSERT INTO sys_global(id,`code`,codename) VALUES(2,'sex:0','女');

发现插入到插入到3个表中

 

查看更新的执行计划,如下:

EXPLAIN UPDATE sys_global SET `codename`='汉子' WHERE `code`='sex:1';

 

EXPLAIN UPDATE sys_global SET `codename`='妹子' WHERE `code`='sex:0';

 

查看查询的执行计划

EXPLAIN SELECT * FROM sys_global;

 

 每次执行所使用的数据库都不相同,可见全局表的查询是轮询。

说明

如查一个逻辑表不设置全局,也不设置路由规则,那么默认所有节点都会存数据

查询时会所以的节点数据全查询出,再汇总,会出现重复数据

 

新建表格

CREATE TABLE sys_global2(
  id INT PRIMARY KEY ,
  `code` VARCHAR(30) ,
  codename VARCHAR(20) NOT NULL
);

EXPLAIN INSERT INTO sys_global2(id,`code`,codename) VALUES(1,'sex:1','男');

 

EXPLAIN INSERT INTO sys_global2(id,`code`,codename) VALUES(2,'sex:0','女');

 

执行查询语句

 SELECT * FROM sys_global2;

不加全局表,不写路由,查询结果如下:

 执行计划如下:

 

不加全局表查询的时候,为查询全部数据库,而不是轮询,而全局表在查询的时候会去轮询查某一个数据库中的表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security认证和授权

Spring Security认证和授权 一、Spring Security的认识 Spring Security是Spring家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity来做安全框架。小…

Windows C语言 UDP通信demo

目录编译环境快速入门编译指令服务端code客户端code参考文章以及遇到的问题编译环境 我的demo是通过此文章从C更改成的C,编译环境使用的是Mingw,如下图所示 快速入门 拷贝代码编译互传消息 编译指令 客户端:gcc .\udpclient.c -lwsock3…

《剑指offer》– 链表中倒数第k个节点、反转链表、合并两个排序的链表

一、链表中倒数时第k个节点: 1、题目: 输入一个链表,输出该链表中倒数第k个结点。 2、解题思路:单链表具有单向移动的特性。 (1)第一种:先遍历链表,算出链表节点数count&#xf…

计算机毕设Python+Vue学生用品采购系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

我国风电行业发展现状:并网装机容量持续增长 产业集中化趋势明显

根据观研报告网发布的《2022年中国风电行业分析报告-行业全景评估与投资规划分析》显示,风电是一种清洁、绿色的可再生能源。风力发电是能源领域中技术最成熟、最具规模开发条件和商业化发展前景的发电方式之一。发展风力发电对于解决能源危机、减轻环境污染、调整能…

【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day13

大家好,我是陶然同学,软件工程大三明年实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…

【1760. 袋子里最少数目的球】

来源:力扣(LeetCode) 描述: 给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。 你可以进行如下操作至多 maxOperations 次: 选择任意一个袋子&#…

开发板到货记录一波

今天在终于拿到了期待已久的开发板RK3568,来,亮个相吧!!! 开发板资源还是相当丰富的,对于学习安卓&Linux都是非常友好的,开发板默认安装的是安卓11系统,由于经费问题目前还没有…

小米发明“永动机”:走路即可为智能设备充电

蓝牙耳机、智能智能手表、智能手环、智能眼镜、智能手机……随着科技的进步,越来越多的移动与可穿戴智能设备开始走进我们的生活,智能设备在给人们生活带来便利的同时,也带来了一些困惑,越来越多诸如手环、TWS耳机等智能穿戴设备&…

火热的元宇宙,成为未来趋势

近年来,中国在算力上突飞猛进,有望成为世界顶尖,再加数据和算法上的优势,中国就很有可能在元宇宙方面率先开发出原创性的技术,从而实现从“0”到“1”的突破。 元宇宙办公 在未来的元宇宙畅想中,人们不仅…

java Lambda表达式的标准格式及其前提带有(代码演示)

观看本文 首先 你要对Lambda的概念有个基本了解 对此 您可以先查看我的文章 java Lambda概念 通过实现线程简单体验一下Lambda表达式 跟着上一篇文章做 你的代码会是这样 new Thread( () ->{System.out.println("执行线程"); } ).start();而其中Lambda 表达式 则…

资产种类多数量大、使用地点分散?集中管理,一招搞定

随着银行规模不断壮大,资产数量也随之不断增加,同时银行资产具有总量大、价值高、使用地点分散、管理难度大的特点,IT资产、房产、办公用品、维修保养需求随着业务的快速增长对管理工作带来了压力。 传统资产管理4大痛点 01.账实不符 实物账…

【Python机器学习】神经网络中常用激活函数、损失函数、优化方法(图文解释 附源码)

下面以经典的分类任务:MNIST手写数字识别,采用全连接层神经网络 MNIST数据集是一个手写体的数字图片集,它包含有训练集和测试集,由250个人手写的数字构成。训练集包含60000个样本,测试集包含10000个样本。每个样本包括…

数据结构基础--散列表

一、散列简介 散列表,又叫哈希表(Hash Table),是能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。也就是说,把关键字映射到一个表中的位置来直接访问记录,以加快访问速度。 通常&#xff0…

Android设计模式详解之建造者模式

前言 Builder模式是一种创建型设计模式。 定义:将一个复杂对象的创建与它的表示分离,使得同样的构造过程可以创建不同的表示。 使用场景: 相同的方法,不同的执行顺序,产生不同的事件结果时;多个部件或零…

java学习day63(乐友商城)商品新增后台、商品编辑后台、搭建前台系统页面

1.商品新增 当我们点击新增商品按钮: 就会出现一个弹窗: 里面把商品的数据分为了4部分来填写: 基本信息:主要是一些简单的文本数据,包含了SPU和SpuDetail的部分数据,如 商品分类:是SPU中的cid1&…

大型项目都会使用到的Makefile

一、vi编辑器之神 1.vi编辑器的三种模式: 插入模式:可以编辑文档 编辑模式:可以敲一些命令,执行例如复制n行 剪切n行 ,粘贴等功能 命令模式:(最后一行模式) 在此模式下可以保存文件,退出vi…

第03讲:Redis的持久化方案

前言 redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。 redis提供两种持久化方式: RDB:快照,通过从服务器保存和持久化AOF&…

Codeforces Round #839 (Div. 3) A~G all answer

Dashboard - Codeforces Round #839 (Div. 3) - Codeforces 最近状态奇差无比,还有点生病,低烧反复横跳,应该没阳?(虽然家人都阳了,就剩我一个了wuwuwu~(A B C就不作解释了&#xff…

【小5聊】Python3 使用selenium模块实现简单爬虫系列一

第一次听说Python还是在工作的时候,还是一位女生在用,当时她说可以用来处理excel文档,特别是一些统计分析。第二次让我真正进入python世界,还是在一次C站举办的大赛上。聊聊你是因为什么机缘巧合进入到python圈的呢?不…