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

MyISAM vs InnoDB 效能實測對比:配置參數對寫入效能的決定性影響

     編輯:MySQL 資料庫相關知識

測試環境

項目配置
CPUAMD 2500+ (1.8GHz)
記憶體1GB
硬碟80GB IDE
OSWindows XP SP2
PHP5.2.1
MySQL5.0.37
WebIIS 6

表結構

CREATE TABLE myisam (id INT AUTO_INCREMENT, name VARCHAR(100), content TEXT, PRIMARY KEY(id)) ENGINE=MyISAM DEFAULT CHARSET=gbk;
CREATE TABLE innodb (id INT AUTO_INCREMENT, name VARCHAR(100), content TEXT, PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET=gbk;

測試數據

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

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

場景 1:預設配置 innodb_flush_log_at_trx_commit=1

數據量MyISAMInnoDB
1 萬3219
10 萬292,092
100 萬287未測

場景 2:innodb_flush_log_at_trx_commit=0

數據量MyISAMInnoDB
1 萬33
10 萬3029
100 萬273423

場景 3:innodb_buffer_pool_size=1024M(超大緩衝池)

數據量InnoDB
1 萬3
10 萬33
100 萬607

場景 4:innodb_buffer_pool_size=256M, innodb_flush_log_at_trx_commit=1, SET AUTOCOMMIT=0

數據量InnoDB
1 萬3
10 萬26
100 萬379

預設配置文件

[mysqld]
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
innodb_buffer_pool_size=159M
innodb_log_file_size=80M
innodb_thread_concurrency=8
... (其他參數見原文)

總結與建議

  1. MySQL 5.0 中 MyISAM 與 InnoDB 效能差距不大,**關鍵在參數調優**。
  2. innodb_flush_log_at_trx_commit=1 導致每次提交刷盤,效能暴跌。**建議設 0 或配合 SET AUTOCOMMIT=0 批次提交**。
  3. innodb_buffer_pool_size 增大有提升,但非線性,需視實際負載平衡。
  4. InnoDB 擁有事務、行鎖、視圖、存儲程序等優勢,高併發場景表現優於 MyISAM。**良好配置下可全面替代 MyISAM**。
  5. 非關鍵、低併發 Web 應用仍可用 MyISAM,視業務決策。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved