存储引擎
这个名词只有在MySQL 中存在,(oracle中有对应的机制,但是不叫存储引擎,Oracle 中只叫:表的存储方式)
常见的存储引擎:
Engine: | 特点 | |
---|---|---|
InnDB | 字符集大都 utf-8 支持事务 这种存储数据安全性。 支持行级锁,外键 不支持压缩 | 1.每个InnoDB表在数据库目录中.frm格式文件表示 2.InnoDB表空间tablespace被用于存储表的内容,无转换为只读 3.提供一组用来记录事务性活动的日志文件 4.用commit,rollback, save point 支持是事务处理 |
5.提供全ACID兼容 6.在MySQL服务器崩溃后自动恢复。 7.多版本(MVCC)和行级锁定 8.支持外键引用的完整性,包括级联删除和更新(和外键有关系) | ||
myISAM | 1.不支持事务 2.最常用的存储引擎,但是不是默认的。 | 1.使用三个文件表示每个表 格式文件(mytable.frm)——存储表结构的定义 数据文件(mytable.myd)——存储表行的内容 索引文件(mytable.myi)——存储表上索引 |
2.灵活额AUTO_INCREMENT 字段处理 | ||
3.可被转换为压缩。只读表来节省空间 4.节省空间 | ||
MEMORY | 使用memory 存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得 1.不支持事务; 2.数据容易丢失,所有数据在内容中 | 查询速度最快 1.每个表以.frm格式的文件表示 2.表数据以及索引被存储在内存中 3.表级锁机制 4.不能包含text, blob字段二进制 5.断电就没有了 |
如何选择;
根据业务需求