| |
|
开发:
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的难题。 通过全局表+基于E-R关系的分片策略,MyCAT可以满足80%以上的企业应用开发。 ? 2 配置方式全局表配置比较简单,不用写Rule规则,如下配置即可:? ?修改schema.xml ? 测试 新建全局表
查看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; ? ?每次执行所使用的数据库都不相同,可见全局表的查询是轮询。 说明 如查一个逻辑表不设置全局,也不设置路由规则,那么默认所有节点都会存数据 查询时会所以的节点数据全查询出,再汇总,会出现重复数据 ? 新建表格
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; 不加全局表,不写路由,查询结果如下: ?执行计划如下: ? 不加全局表查询的时候,为查询全部数据库,而不是轮询,而全局表在查询的时候会去轮询查某一个数据库中的表。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/22 18:35:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |