面试官经常问到有关数据库的问题,多数可能就是基于MySQL数据库的这几种引擎。
简介概括主要:
1. 总结:一般来说不使用事务的话,请使用MyISAM引擎,使用事务的话,一般使用InnoDB。
2. 比较常用的数据库引擎3种:
- MYISAM:支持3中存储方式:静态型,动态型,压缩型
- 优点:占用的空间小,存储的速度快
- 缺点:不支持事务和并发
- 使用场景:数据表主要做修改和查询操作
- innoDB:
- 优点:提供事务的支持,回滚,崩溃修复佛如能力,多版本事务并发控制
- 缺点:读写效率较差,占用的数据库空间较大
- 使用场景:MySQL主要引擎
- Memory:内存中对数据创建表,数据全部存储在内存
- 缺点:生命周期短
- 优点:读写速度非常快,对数据的安全性要求比较低的时候可以选择memory
- 使用场景:MySQL中使用该引擎作为临时表
3.以下是长篇大论,有兴趣的可以看一下。
- InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
- MYISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
- Memory:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
4.市场上部分引擎(比主流差一丢丢)
- ·MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
- · InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。(提供行级锁)
- · BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
- · Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
- · Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
- · Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
- · Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
- · Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
- · Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。