【存储引擎】MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
MySQL的存储引擎是针对表进行设置的,一个库的不同表可以设置不同的存储引擎,MySQL默认支持多种存储引擎,以适用不同领域的数据库应用需要。
主要的几个数据库引擎如下:
- 1.MyISAM存储引擎
- 5.5之前默认的存储引擎
- 基于ISAM存储引擎,并对其进行扩展
- 不支持事务、不支持外键,表级锁,内存和硬盘空间占用率低
- 插入数据快,空间和内存使用比较低,对事务完整性没有要求,以select、insert为主的应用基本上都可以使用这个引擎
- 如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。
- 如果应用的完整性、并发性要求比 较低,也可以使用。
- 2.InnoDB存储引擎
- 5.5之后默认的存储引擎,使用最广泛
- 支持事务处理,支持外键,行级锁,支持崩溃修复能力和并发控制
- 劣势在于写的处理效率相对较低,并且会占用更多的磁盘空间以保留数据和索引
- 如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
- 如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
- 3. MEMORY存储引擎
- 所有的数据都在内存中,数据的处理速度快,但是安全性不高
- 默认使用HASH索引
- 一旦数据库服务重启或关闭,表中的数据就会丢失
- 如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY
- 4. MERGE存储引擎
- MERGE存储引擎是一组MyISAM表组合,这些MyISAM表结构完全相同。
- MERGE表本身没有数据
- 对MERGE表的CRUD操作都是通过内部的MyISAM表进行的
不同存储引擎,参数:
其中InnoDB 和 MyISAM之间的区别:
- InnoDB支持事物,而MyISAM不支持事物
- InnoDB支持行级锁,而MyISAM支持表级锁
- InnoDB支持MVCC, 而MyISAM不支持
- 4InnoDB支持外键,而MyISAM不支持
- 5InnoDB不支持全文索引,而MyISAM支持