max_heap_table_size = 128M兩張表結構相同,僅儲存引擎不同:
tbl_heap:ENGINE=HEAP(記憶體表)tbl_isam:ENGINE=InnoDB(註:原文標題為 MyISAM,實際 DDL 為 InnoDB,下文以實際引擎為準)| 筆數 | HEAP 耗時(秒) | InnoDB 耗時(秒) | HEAP 優勢 |
|---|---|---|---|
| 10,000 | 3.50 | 4.59 | 24% |
| 50,000 | 19.90 | 33.87 | 41% |
| 100,000 | 36.20 | 68.34 | 47% |
| 200,000 | 68.00 | 125.26 | 46% |
結論:HEAP 引擎純記憶體操作,插入速度隨資料量增長優勢擴大,約快 40-50%。
| 查詢模式 | HEAP 耗時(秒) | InnoDB 耗時(秒) | 備註 |
|---|---|---|---|
| 直接 SELECT,10,000 次 × 100 筆 | 12.12 | 19.51 | HEAP 快 38% |
| 直接 SELECT,1,000 次 × 10,000 筆 | 111.54 | 116.79 | 差距縮小 |
| WHERE 條件,1,000 次 × 10,000 筆 | 111.52 | 117.68 | |
| WHERE + LIMIT,10,000 次 × 1,000 筆 | 124.29 | 139.82 | |
| WHERE + LIKE,10,000 次 × 1,000 筆 | 145.44 | 163.56 | |
| 建立索引後查詢 | 153.49 | 239.87 | HEAP 建索引極快(2.08s vs 13.52s) |
生產系統中,核心業務表用 InnoDB;Session、暫存統計、快取中間表可用 HEAP/Memory 引擎,並設定合理 max_heap_table_size 防止佔滿記憶體。