当前位置: 代码迷 >> 综合 >> MySQL 存储引擎 MyISAM 与 InnoDB 如何选择
  详细解决方案

MySQL 存储引擎 MyISAM 与 InnoDB 如何选择

热度:43   发布时间:2023-11-23 08:16:34.0

MySQL 有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY (HEAP)、BDB (BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

虽然 MySQL 里的存储引擎不只是 MyISAM 与 InnoDB 这两个,但常用的就是两个。
关于 MySQL 数据库提供的两种存储引擎,MyISAM 与 InnoDB 选择使用:

1.INNODB 会支持一些关系数据库的高级功能,如事务功能和行级锁,MyISAM 不支持。
2.MyISAM 的性能更优,占用的存储空间少,所以,选择何种存储引擎,视具体应用而定。

如果你的应用程序一定要使用事务,毫无疑问你要选择 INNODB 引擎。但要注意,INNODB 的行级锁是有条件的。在 where 条件没有使用主键时,照样会锁全表。比如 DELETE FROM mytable 这样的删除语句。

如果你的应用程序对查询性能要求较高,就要使用 MyISAM 了。MyISAM 索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于 INNODB。压缩后的索引也能节约一些磁盘空间。MyISAM 拥有全文索引的功能,这可以极大地优化 LIKE 查询的效率。

有人说 MyISAM 只能用于小型应用,其实这只是一种偏见。如果数据量比较大,这是需要通过升级架构来解决,比如分表分库,而不是单纯地依赖存储引擎。

现在一般都是选用 innodb 了,主要是 MyISAM 的全表锁,读写串行问题,并发效率锁表,效率低,MyISAM 对于读写密集型应用一般是不会去选用的。

  相关解决方案