IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mycat(13):全局表和普通表的配置和测试 -> 正文阅读

[大数据]Mycat(13):全局表和普通表的配置和测试

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;

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

?执行计划如下:

?

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:16:02  更:2022-12-25 11:19:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年2日历 -2024/2/29 6:43:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码