MySQL 启用 InnoDB 存储引擎的方法

MySQL 安装后默认使用 MyISAM 存储引擎,但它还支持多种存储引擎,例如 InnoDB 存储引擎,它们各有优势,可根据实际需求变更存储引擎,以发挥 MySQL 最大性能优势。

1、存储引擎是什么?


MySQL 中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在 MySQL 中被称作存储引擎(也称作表类型)。MySQL 默认配置了许多不同的存储引擎, 可以预先设置或者在 MySQL 服务器中启用。

2、MySQL 支持的存储引擎


  • MyISAM:默认的 MySQL 插件式存储引擎,它是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。

  • InnoDB:用于事务处理应用程序,具有众多特性,包括 ACID 事务支持。

  • BDB:可替代 InnoDB 的事务引擎,支持 COMMIT、ROLLBACK 和其他事务特性。

  • Memory:将所有数据保存在 RAM 中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

  • Merge:允许 MySQL DBA 或开发人员将一系列等同的 MyISAM 表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等 VLDB 环境十分适合。

  • Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

  • Federated:能够将多个分离的 MySQL 服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

  • Cluster/NDB:MySQL 的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

  • Other:其他存储引擎包括 CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。

3、启动 InnoDB 引擎的方法


MySQL 中默认的是 MyISAM 数据引擎,可惜此引擎不支持事务处理,我们需要将默认的数据引擎改为 InnoDB。其中 InnoDB 和 BerkeleyDB 支持事务处理,只是默认的情况下都是被 disable 的。所有的引擎里面,InnoDB 性能最强大,算是商业级的。启动 InnoDB 引擎的方法如下:

  1. 关闭 mysql 的服务。

  2. 修改 my.ini。
    default-storage-engine=INNODB前的注释(#)去掉。
    skip-innodb这行注释(加上#)。

  3. 保存后重启 mysql 服务。

4、MyISAM 引擎和 InnoDB 引擎的基本差别


  • MyISAM 类型不支持事务处理等高级处理,而 InnoDB 类型支持。

  • MyISAM 类型的表强调的是性能,其执行数度比 InnoDB 类型更快,但是不提供事务支持,而 InnoDB 提供事务支持已经外部键等高级数据库功能。

  • MyIASM 是 IASM 表的新版本,有如下扩展:二进制层次的可移植性、NULL 列索引、对变长行比 ISAM 表有更少的碎片、支持大文件、更好的索引压缩等。

  • InnoDB 不支持FULLTEXT类型的索引。

  • InnoDB 中不保存表的具体行数。

  • 对于AUTO_INCREMENT类型的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中,可以和其他字段一起建立联合索引。

  • DELETE FROM table时,InnoDB 不会重新建立表,而是一行一行的删除。

  • ……

这些区别能够影响应用程序的性能和功能,因此你必须针对业务类型来选择合适的引擎,才能最大的发挥 MySQL 的性能优势。

(完)