MySql 存储引擎 InnoDB 与 MyISAM 有什么区别
区别
- 事务支持不同,InnoDB 支持事务处理,而 MyISAM 不支持。
- 并发处理不同:InnoDB 支持行级锁,而 MyISAM 支持表级锁
- 外键支持不同:InnoDB 支持外键约束,而 MyISAM 不支持
- 性能上存在差异:MyISAM 的读取速度比 InnoDB 快,但是在高并发环境下, InnoDB 的性能更好。这是因为 InnoDB 支持行级锁和事务处理,而 MyISAM 不 支持。 所以,如果是读多写少的情况下,使用 MyISAM 引擎会更合适。
- 数据安全不同:InnoDB 支持崩溃恢复和数据恢复,而 MyISAM 不支持。如果 MySQL 崩溃了或者发生意外故障,InnoDB 可以通过恢复日志来恢复数据。
如何选择?
MyISAM 和 InnoDB 是 MySQL数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。InnoDB 会支持一些关系数据库的高级功能,如事务功能和行级锁,MVISAM不支持MyISAM 的性能更优,占用的存储空间少。所以,选择何种存储引警,视具体应用而定。
(1)如果应用程序一定要使用事务,毫无疑问要选择InnoDB 引擎。但要注意,InnoDB的行级锁是有条件的。在 where 条件没有使用主键时,照样会锁全表。比如 DELETEFROMmytable 这样的删除语句。
(2)如果应用程序对查询性能要求较高,就要使用MVISAM 了。MVISAM 索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于 InnoDB.压缩后的索引也能节约一些磁盘空间。