可能重复:
MySQL中的InnoDB和MyISAM是什么?
在我的项目数据库中,一些表的引擎类型为innoDB,另一些为Myisam。为什么设置成这样?
MySQL数据库的两种主要类型的表存储引擎是InnoDB和MyISAM。为了总结功能和性能的差异,
- InnoDB较新,而MyISAM较旧
- InnoDB更复杂,而MyISAM更简单
- InnoDB在数据完整性方面更加严格,而MyISAM则比较宽松
- InnoDB实现行级锁用于插入和更新,MyISAM实现表级锁
- InnoDB有事务,而MyISAM没有
- InnoDB有外键和关系约束,而MyISAM没有
- InnoDB具有更好的崩溃恢复能力,而MyISAM在系统崩溃时恢复数据完整性方面较差
- MyISAM有全文搜索索引,而InnoDB没有
鉴于这些差异,InnoDB和MyISAM有其独特的优势和劣势。它们在某些情况下比另一种更合适。
InnoDB 的优势
- InnoDB应该在数据完整性优先的情况下使用,因为它本质上是通过关系约束和事务来照顾它们的
- 在写密集型(插入、更新(表中速度更快,因为它利用了行级锁定,并且只保留对正在插入或更新的同一行的更改
InnoDB 的缺点
- 由于InnoDB必须处理表之间的不同关系,数据库管理员和方案创建者必须花更多的时间来设计比MyISAM更复杂的数据模型
- 消耗更多的系统资源,如RAM。事实上,许多人建议,如果MySQL安装后没有实质性的需求,则关闭InnoDB引擎
- 没有全文索引
MyISAM 的优势
- 设计和创建更简单,因此更适合初学者。不用担心桌子之间的对外关系
- 由于结构更简单,总体上比InnoDB更快,因此服务器资源成本更低
- 全文索引
- 特别适用于阅读密集型(精选(表
MyISAM 的缺点
- 并没有数据完整性(例如关系约束(检查,这就成为数据库管理员和应用程序开发人员的责任和开销
- 不支持在银行等关键数据应用程序中至关重要的交易
- 对于经常插入或更新的表,速度比InnoDB慢,因为整个表都被锁定以进行任何插入或更新
这种比较非常简单。InnoDB更适合于需要频繁插入和更新的数据关键情况。另一方面,MyISAM在不太依赖数据完整性的应用程序中表现更好,这些应用程序大多只是选择和显示数据。
参考:InnoDB和MyISAM 的比较
您也可以在这里查看更多详细信息:MyISAM还是InnoDB MySQL引擎?
希望这能有所帮助。
当您使用MySQL数据库时,您可以选择适合您需求的存储引擎。从你所说的,听起来你继承了这个项目,所以之前的开发人员在创建表时可能选择了不同的引擎。他们还可以使用具有不同设置的第三方工具和MySQL Workbench,从而使用不同的存储引擎创建表。
不管怎样,在谷歌上快速搜索或在本网站上搜索应该能让你了解两者之间的区别,以及它们的优缺点(本质上是表与行级别的锁定、关系强制、事务和回滚(。
接下来,您可以在配置文件中设置默认存储引擎,这样当您创建新表时,它们将具有相同的类型。
InnoDB是MySQL 5.5的默认引擎。
下面是一个很好的对话:MyISAM与InnoDB