首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL MyISAM vs InnoDB 效能實測對比:插入效能、參數影響與選型建議

     編輯:MySQL 資料庫相關知識

測試環境

  • 硬體:AMD 2500+ (1.8GHz)、1GB RAM、80GB IDE
  • 軟體:Windows XP SP2、PHP 5.2.1、MySQL 5.0.37、IIS 6
  • 表結構:相同結構 id PK, name VARCHAR(100), content TEXT,分別用 MyISAM/InnoDB

測試數據內容

固定字串:name='heiyeluren',content 為約 1KB MySQL 儲存引擎介紹文本。

核心測試結果 (插入速度:筆/秒)

場景MyISAM 1WMyISAM 10WMyISAM 100WInnoDB 1WInnoDB 10WInnoDB 100W
預設 (innodb_flush_log_at_trx_commit=1)3292872192092未測
innodb_flush_log_at_trx_commit=0330273329423
innodb_buffer_pool_size=1024M---333607
buffer_pool=256M + flush_log=1 + autocommit=0---326379

關鍵發現

  1. innodb_flush_log_at_trx_commit=1 為效能殺手:每次提交強制刷盤,InnoDB 插入極慢。設為 0 或用 SET AUTOCOMMIT=0 手動提交可提升百倍。
  2. innodb_buffer_pool_size 影響有限:測試中 1GB vs 256MB 差異不大,瓶頸在刷盤而非緩衝池。
  3. MyISAM 插入極其穩定:受參數影響極小,但無事務、表鎖、易損壞。
  4. InnoDB 100W 達 607/s (最佳參數):適當配置下大數據量寫入效能可超越 MyISAM。

選型建議

場景建議引擎理由
非關鍵、讀多寫少、無事務、可容忍損壞風險MyISAM簡單、快、全文索引
關鍵業務、需事務、高併發寫入、行鎖、崩潰恢復InnoDBACID、行鎖、MVCC、自動恢復
混合負載分表引擎日誌/統計用 MyISAM,核心交易用 InnoDB

配置關鍵點

[mysqld]
innodb_flush_log_at_trx_commit = 0  # 或 2 (折中:每秒刷盤)
innodb_buffer_pool_size = 70%_RAM
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
# 批量匯入時
SET AUTOCOMMIT=0;  -- 手動提交事務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved