# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。