mysql常见存储引擎
8.4、mysql常见存储引擎
MyISAM存储引擎:
特征:
使用三个文件表示每个表:
格式文件—存储表结构的定义(mytable.frm)
数据文件—存储表行的内容(mytable.MYD)
索引文件—存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高查询效率的机制
优势:可被转换成压缩、只读表来节省空间
不支持事务,安全性低
提示:对于一张表,只要是主键,或者加有unique约束的字段上会自动创建索引
InnoDB存储引擎:
这是mysql默认的存储引擎,也是重量级存储引擎。
InnoDB支持事务,支持数据库崩溃后自动恢复机制。
InnoDB存储引擎最主要的特点:安全
特征:
每个InnoDB表在数据库目录中以.frm格式文件表示
InnoDB表空间 tablespace 被用于存储表的内容
提供一组用来记录事务性活动的日志文件
用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理
提供全ACID兼容
在MySQL服务器崩溃后提供自动恢复
多版本(MVCC)和行级锁定
支持外键及引用的完整性,包括级联删除和更新
优点:支持事务:保证数据安全,效率不是很高,并且不能压缩,不能转换成只读,不能很好的节省存储空间
MEMORY存储引擎:
使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,
这两个特点使得MEMORY存储引擎非常快
MEMORY存储引擎管理的表具有特征:
在数据库目录内,每个表均以.frm格式的文件表示
表数据及索引被存储在内存中(目的就是快,查询快)
表级锁机制
不能包含TEXT或BLOB字段
MEMORY存储引擎以前被称为HEAP引擎
优点:查询效率最高,不需要和硬盘交互
缺点:不安全,关机之后数据消失,因为数据和索引都是在内存中