MySQL的存储引擎
MySQL常用存储引擎对比 特点 MyISAM InnoDB MEMORY MERGE NDB 存储限制 有 64TB 有 没有 有 事务安全 支持 锁机制 表锁 行锁 表锁 表锁 行锁 B树索引 支持 支持 支持 支持 支持 哈希索引 支持 支持 全文索引 支持 集群索引 支持 数据缓存 支持 支持 支持 索
MySQL常用存储引擎对比
特点 | MyISAM | InnoDB | MEMORY | MERGE | NDB |
存储限制 | 有 | 64TB | 有 | 没有 | 有 |
事务安全 |
|
支持 |
|
|
|
锁机制 | 表锁 | 行锁 | 表锁 | 表锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | 支持 | 支持 |
哈希索引 |
|
|
支持 |
|
支持 |
全文索引 |
支持 |
|
|
|
|
集群索引 |
|
支持 |
|
|
|
数据缓存 |
|
支持 | 支持 |
|
支持 |
索引缓存 |
支持 | 支持 | 支持 | 支持 | 支持 |
数据可压缩 |
支持 |
|
|
|
|
空间使用 |
低 | 高 | N/A | 低 | 低 |
内存使用 |
低 | 高 | 中等 | 低 | 高 |
批量插入的速度 |
高 | 低 | 高 | 高 | 高 |
支持外键 |
|
支持 |
|
|
|
1、MyISAM
MyISAM引擎不支持事务,也不支持外键,优势是访问速度快。对事务完整性没有要求或者以SELECT
、INSERT
为主的应用基本上都可以用这个引擎。
还有个问题就是MyISAM类型的表比较容易损坏。可以用CHECK TABLE
语句来检查表的健康状态,用REPAIR
TABLE
来修复。
它还支持三种不同的存储格式:
-
静态(固定长度)表(默认格式);
-
动态表;
-
压缩表。
2、InnoDB
InnoDB引擎提供了具有提交、回滚和崩溃恢复能力的事务安全特性。
还有以下一些特点:
-
自动增长列;
-
外键约束;
-
存储表和索引有两种方式:使用共享表空间存储和使用多表空间存储。
3、MEMORY
MEMORY存储引擎的数据是放在内存中的,所以访问速度非常快。表中的数据是没有写入到磁盘的,一旦服务关闭或者关机,表的数据都会丢失。
他主要用于那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效的对中间结果进行分析并得到最终统计结果。
4、MERGE
它是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,MERGE表本身并没有数据,对MERGE表进行查询、更新、删除操作,实际上是对内部的MyISAM表进行的。
对于MERGE表的插入操作,是通过INSERT_METHOD
字句定义插入的表,可以有3个不同的值,使用FIRST
或LAST
值使得插入操作被相应地作用在第一或最后一个表上,不定义这个字句,或者定义为NO,表示不能对这个MERGE表进行插入操作。
可以对MERGE表进行DROP
操作,这个操作只是删除MERGE的定义,对内部的表没有任何的影响。