| 角色 | 數量 | 規格建議 | 實際部署 |
|---|---|---|---|
| 管理節點 (MGM) | 1 | 普通 PC 即可 | 1 台普通 PC |
| SQL 節點 (API) | 1 | 4GB+ RAM、千兆網卡、64 位 | 1 台 Dell 高階伺服器 |
| 資料節點 (NDBD) | 2 | 4GB+ RAM、千兆網卡、64 位 | 2 台 HP 普通伺服器 |
關鍵發現:Dell 高階伺服器效能顯著優於 PC,懷疑網卡吞吐量為關鍵瓶頸。建議生產環境統一採用萬兆網卡 + 專用交換機,隔離 Cluster 心跳與資料同步流量。
[NDBD DEFAULT]
NoOfReplicas=2 # 兩副本,雙資料節點互為備份
DataMemory=3G # 根據資料量規劃,預留 20% 給索引
IndexMemory=512M
[NDB_MGMD]
HostName=192.168.0.10 # 管理節點 IP
[NDBD]
HostName=192.168.0.40 # 資料節點 1
DataDir=/var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.50 # 資料節點 2
DataDir=/var/lib/mysql-cluster
[MYSQLD]
HostName=192.168.0.20 # SQL 節點
HostName=192.168.0.30
CREATE TABLE `userkeyWord` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ClientID` varchar(25) NOT NULL DEFAULT '',
`LastUpdateTime` datetime DEFAULT NULL,
`KeyWord` varchar(25) NOT NULL DEFAULT '',
`UpdateCount` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `idxUpdateCount` (`UpdateCount`),
KEY `idxcid` (`ClientID`),
KEY `idxkw` (`KeyWord`)
) ENGINE=ndbcluster DEFAULT CHARSET=utf8;
測試資料量:240 萬行。
| 指標 | 單機 MyISAM/InnoDB | MySQL Cluster (6 客戶端) | 結論 |
|---|---|---|---|
| 寫入吞吐 (INSERT/UPDATE) | ~150 行/秒/客戶端 | ~500 行/秒(總計) | 集群寫入擴展性明顯優於單機 |
| 關鍵詞排序查詢 (點查+排序) | ~50-100 ms | 0.01 秒 | 分散式索引掃描極快,滿足即時推薦 |
| 子查詢效能 | 正常 | 極差,嚴重拖慢 | NDB 不支援高效子查詢,需應用層改寫為 Join |