關於 MySQL INSERT 的真實效能,相信大多數開發者都難以給出準確答案。網路上雖然流傳著許多總結文章,但「紙上得來終覺淺」,最終還是得靠實際數據說話。筆者近期針對插入 1000 萬筆資料進行了系統性測試,涵蓋 MyISAM、InnoDB、NDB Cluster 三種儲存引擎,並在單執行緒、百執行緒、千執行緒等不同併發場景下驗證表現,以下為完整測試紀錄與核心發現。
VARCHAR(255) 欄位,內容為 32 位 UUID,僅有主鍵,無其他索引innodb_flush_log_at_trx_commit=1innodb_flush_log_at_trx_commit=0
在壓力測試中 MyISAM 優勢極為明顯。100 執行緒曲線最低(耗時最短),1000 執行緒緊隨其後,且效能呈現近乎線性擴展。得益於表鎖機制與無事務開銷,純寫入場景下 MyISAM 表現強勁。
innodb_flush_log_at_trx_commit 參數決定生死DataMemory。同條件下 MongoDB 單執行緒寫入速度是 MySQL 的 3 倍,得益於索引常駐記憶體與無 Schema 設計。若加入查詢對比,差距或將更大。雲原生時代,關係型資料庫在海量資料、高併發、強一致性、災備之間的取捨愈發艱難,MySQL 核心優勢逐漸收斂至「完整事務支援」單一項目。
建議:純寫入、高併發、可容忍資料遺失場景首選 MyISAM;需 ACID 保障則 InnoDB 配合 innodb_flush_log_at_trx_commit=2 平衡效能與安全;NDB 適合極高可用、記憶體充足的分散式場景,但需精細調優 Proxy 與記憶體參數。