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

发布时间:2020-10-12编辑:脚本学堂
有关mysql5.6与mysql5.5中禁用innodb存储引擎的方法,mysql5.5默认使用innodb了,不能直接关闭掉,还要设置下默认使用的引擎为myisam才可以。

第一部分,mysql5.5中禁用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命令用法是一样的,运行一遍就可以。
然后,无法关闭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%左右。

选择哪一款做为生产环境中的mysql服务器软件,以及如何选择,参照以上介绍的方法,基本都可以解决。
 


延伸阅读mysql如何启用innodb存储引擎?