# MyCat全局表怎么使用 ## 什么是MyCat全局表 MyCat全局表(Global Table)是MyCat分库分表中间件提供的一种特殊表类型,它会在所有数据节点(分片)上保持完全一致的数据副本。主要特性包括: - **全节点冗余存储**:数据会同步复制到所有配置的物理库中 - **自动数据同步**:通过MyCat写入的数据会自动同步到所有节点 - **本地化查询**:查询操作可以在任意节点本地执行,避免跨库JOIN ## 适用场景 全局表特别适合以下业务场景: 1. **数据量小的基础表**:如地区表、字典表、配置表等 2. **高频关联查询表**:需要与其他分片表频繁JOIN的维度表 3. **读多写少的表**:写入频率低但查询频率高的表 ## 配置全局表 ### 1. schema.xml配置 ```xml <table name="t_region" primaryKey="id" type="global" dataNode="dn1,dn2,dn3"/> 关键参数说明: - type="global":声明为全局表类型 - dataNode:指定要同步的节点列表 - primaryKey:必须指定主键,用于数据同步
全局表通常不需要分片规则,但如果需要特殊路由可配置:
<tableRule name="global-rule"> <rule> <columns>id</columns> <algorithm>hash-mod</algorithm> </rule> </tableRule> /*!mycat:sql=select * from t_region where id = 100*/ SELECT * FROM t_region WHERE id = 100; 使用HintSQL可以指定从特定节点查询
通过MyCat创建表会自动在所有节点同步:
CREATE TABLE t_region ( id INT PRIMARY KEY, name VARCHAR(50), code VARCHAR(20) ); -- 插入数据(会自动同步到所有节点) INSERT INTO t_region VALUES(1,'华北','HB'); -- 更新数据(所有节点同步更新) UPDATE t_region SET code='HuaBei' WHERE id=1; -- 查询(从本地节点直接读取) SELECT * FROM t_region WHERE code LIKE 'Hu%'; CHECK TABLE t_region命令检查数据一致性REPR TABLE t_region命令修复数据| 特性 | 全局表 | ER表 |
|---|---|---|
| 数据分布 | 全节点全量数据 | 按关联规则分布 |
| 同步方式 | 写时同步 | 无自动同步 |
| 适用场景 | 小表/维度表 | 具有主外键关联的表 |
| 查询性能 | 本地查询快 | 可能需要跨库查询 |
通过合理使用全局表,可以显著提升分库分表环境下的关联查询性能,同时保证基础数据的一致性。需要根据实际业务特点进行选择和优化。 “`
这篇文章从全局表的概念、配置方法到使用注意事项进行了全面介绍,包含了配置示例、SQL示例和常见问题解决方案,总字数约950字,采用Markdown格式,可以直接用于技术文档发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。