全局表的作用
  在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:
  
  变动不频繁
  数据量总体变化不大
  数据规模不大,很少有超过数十万条记录。
  
   鉴于此,MyCAT 定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:
   1、全局表的插入、更新、删除操作会实时在所有节点上执行,保持各个分片的数据一致性
   2、全局表的查询操作,只随机从一个节点获取
   3、 全局表可以跟任何一个表进行 JOIN 操作
=================================================
开始测试:
#vi /usr/local/mycat/conf/schema.xml
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="test" dataNode="dn1,dn2" primaryKey="id" type="global" />
</schema>

<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />

在db1,db2上分别执行
mysql>create table test(id int auto_increment primary key,name varchar(32)) ;

#mysql -uroot -p123456 -P9066 -h127.0.0.1
mysql(9066)>reload @@config;

#插入表
在逻辑库TESTDB上执行
mysql>INSERT INTO test VALUES(NULL,'doubi1'),(NULL,'doubi2'),(NULL,'doubi3');

#查询插入的数据
mysql>select * from test;
mysql>UPDATE test SET name='handou1' WHERE id='1';
两个节点满足更新条件的记录都会被同时修改!
mysql>INSERT INTO test VALUES(NULL,'doubi4');
mysql>DELETE FROM test WHERE name= 'doubi4';
两个节点满足删除条件的记录都会被同时被删除!
从逻辑数据库查询全局表是随机的从相关节点中任何一个。

mycat 全局表-LMLPHP

mycat 全局表-LMLPHP

参考资料
https://blog.csdn.net/yelllowcong/article/details/79071118

05-12 01:14