硬件:i7-3770 3.4GHz 單核,管理/SQL 節點 900MB 內存,Data 節點 3.6GB,RAID10。
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=2500M
IndexMemory=500M
MaxNoOfConcurrentTransactions=10000
MaxNoOfConcurrentOperations=50000
MaxNoOfExecutionThreads=4
RealTimeScheduler=1
LockPagesInMainMemory=1
ODirect=1
RedoBuffer=1024M
FragmentLogFileSize=32M
NoOfFragmentLogFiles=8
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000
[MGM DEFAULT]
PortNumber=1186
[TCP DEFAULT]
SendBufferMemory=64M
[NDB_MGMD]
NodeId=1
HostName=10.88.49.119
ArbitrationRank=1
[NDBD]
NodeId=4
HostName=10.88.49.124
[API]
NodeId=10
HostName=10.88.49.122
ArbitrationRank=2
[API]
NodeId=11
HostName=10.88.49.123
ArbitrationRank=2
ndb_mgmd -f config.ini(注意 section 名稱空格:[NDBD DEFAULT] 非 [NDBDDEFAULT])ndbd --initial 首次/配置變更;後續 ndbdmysql_install_db --defaults-file=my.cnf,啟動 mysqld_safe,my.cnf 需 ndbcluster + ndb-connectstringndb_mgm -e show 所有節點 CONNECTEDtpcc-mysql 數據加載階段報錯 Out of operation records (MaxNoOfConcurrentOperations),調大參數後磁盤空間不足,放棄。
| 引擎 | 併發 | 500查詢耗時(s) | 1000查詢耗時(s) | 備註 |
|---|---|---|---|---|
| NDB | 8 | 0.308 | 0.558 | |
| NDB | 16 | 0.353 | 0.564 | |
| NDB | 24 | 0.346 | - | |
| NDB | 32 | Error | Error | 資源耗盡 |
| InnoDB | 8 | 0.460 | 0.710 | |
| InnoDB | 16 | 0.266 | 0.453 | |
| InnoDB | 24 | 0.203 | 0.541 | |
| InnoDB | 32 | 0.212 | 0.388 | |
| InnoDB | 64 | - | 0.388 |
| 引擎 | 線程 | TPS | QPS | Avg Latency(ms) | 95% Latency(ms) |
|---|---|---|---|---|---|
| NDB | 8 | 345.75 | 6569 | 23.13 | 33.59 |
| NDB | 16 | 437.78 | 8317 | 36.52 | 43.03 |
| NDB | 32 | Error | - | - | MaxNoOfConcurrentTransactions 不足 |
| InnoDB | 8 | 382.77 | 7272 | 20.88 | 38.38 |
| InnoDB | 16 | 398.89 | 7578 | 40.06 | 80.09 |
| InnoDB | 32 | 421.68 | 8011 | 75.72 | 135.06 |
ndb_mgm -e "ALL REPORT MEMORYUSAGE"、Transporter 吞吐、LCP 耗時。MySQL Cluster NDB 引擎不是 InnoDB 的替代品,而是針對「極高可用、極低延遲、線性擴展」場景的專用引擎。單節點測試數據僅供參考,生產部署必須按分佈式架構設計,投入足夠硬件資源,才能釋放其真正價值。