1. 程式人生 > 其它 >mysql5.5與mysq 5.6中禁用innodb引擎的方法

mysql5.5與mysq 5.6中禁用innodb引擎的方法

今天發現有一個備份的mysql資料資料夾異常變大,一查發現是多了三個檔案:ibdata1 ib_logfile0 ib_logfile1,前者18m,後兩個各5m,原來是遷移的時候從mysql5.0遷移到了5.5,而5.5關閉innodb啟動不起來,於是我就開啟了innodb,由於innodb會預設增加這幾個資料檔案和日誌檔案,導致變大。嘗試設定資料檔案的大小,結果告訴我最小10m,還是太大,於是探索關閉innodb的方法。 看日誌發現說由於mysql程序升級了,需要執行mysql_upgrade升級一下mysql裡面的資料庫,這個比較簡單,和mysql命令用法是一樣的,執行一遍就ok了。然後發現還是無法關閉innodb,很奇怪,查了下發現原來mysql5.5預設使用innodb了,所以無法簡單的關閉掉,還要設定一下預設使用的引擎為myisam才可以,在my.cnf里加上如下兩句: 程式碼如下:

default-storage-engine=MYISAM 
innodb=OFF 

重啟mysql,然後刪掉那三個討厭的檔案即可。 MySQL 5.6 禁用INNODB INNODB是MySQL被ORACLE收購後開發的,支援事務和行級鎖等高階功能,但是並不是所有人都需要INNODB的,對大部分人來說,以前的MYISAM引擎就夠了,一般會選擇將預設引擎改為MYISAM,但是INNODB還是會耗費記憶體和硬碟,這時候,就需要把INNODB徹底禁用。 在以前的MySQL中,一般可以這麼設定就行了: 程式碼如下:

default-storage-engine=MYISAM 
skip-innodb 

但是在最新的MySQL5.6裡,這麼設定是沒法啟動的,需要再增加一句設定: 程式碼如下:

default-tmp-storage-engine=MYISAM 

不僅如此,還需要新增以下配置,否則程式會很容易退出的: 程式碼如下:

loose-innodb-trx=0 
loose-innodb-locks=0 
loose-innodb-lock-waits=0 
loose-innodb-cmp=0 
loose-innodb-cmp-per-index=0 
loose-innodb-cmp-per-index-reset=0 
loose-innodb-cmp-reset=0 
loose-innodb-cmpmem=0 
loose-innodb-cmpmem-reset=0 
loose-innodb-buffer-page=0 
loose-innodb-buffer-page-lru=0 
loose-innodb-buffer-pool-stats=0 
loose-innodb-metrics=0 
loose-innodb-ft-default-stopword=0 
loose-innodb-ft-inserted=0 
loose-innodb-ft-deleted=0 
loose-innodb-ft-being-deleted=0 
loose-innodb-ft-config=0 
loose-innodb-ft-index-cache=0 
loose-innodb-ft-index-table=0 
loose-innodb-sys-tables=0 
loose-innodb-sys-tablestats=0 
loose-innodb-sys-indexes=0 
loose-innodb-sys-columns=0 
loose-innodb-sys-fields=0 
loose-innodb-sys-foreign=0 
loose-innodb-sys-foreign-cols=0 

摘自http://docs.oracle.com/cd/E17952_01/refman-5.6-en/innodb-turning-off.html 另外MYSQL 5.6 比 5.5佔用了更多的實體記憶體,虛擬記憶體跟5.5使用差不多(5.5也是一個虛擬記憶體消耗大戶)。效能上比5.5提升了30%左右(根據官方文件,沒作具體測試)。