MySQL常用的存储引擎小结

这个blog我们来聊聊MySQL 常用的存储引擎

一.MySQL存储引擎概述

存储引擎 描述
InnoDB 引擎 支持事务,使用最广泛的存储引擎
MyISAM 引擎 MySQL 5.1之前默认存储引擎,不支持事务,表锁
Memory 引擎 数据保在内存中,重启后会丢失,可以加快查询速度
NDB集群引擎 分布式、share-nothing的、容灾的、高可用的NDB数据库集合
Archive 引擎 只支持insert、select操作,更节省表空间
Blackhole引擎 只记日志不实际存储数据,用于复制数据到备库
CSV引擎 将csv文件(逗号分隔) 当成MySQL表来处理,不支持索引
Federated引擎 访问其它MySQL服务器的一个代理
Merge 引擎 分区表后,该引擎已弃用

二.MyISAM存储引擎

功能 是否支持
B-tree索引 yes
备份/基于时间点的恢复
恢复基于mysql的binlog而不是存储引擎
yes
集群数据库 no
聚簇索引 no
数据压缩 yes( 用compressed row format,表只读)
数据缓存 no
数据加密 yes(在服务器中通过加密功能实现)
外键 no
全文索引 yes
空间数据 yes
空间索引 yes
哈希索引 no
索引缓存 yes
锁级别 表锁
MVCC(多版本并发控制) no
复制支持 yes(server级的binlog)
存储限制 256TB
T-tree 索引 no
事务 no
更新数据字典的统计信息 yes

MyISAM因为不支持事务,如果异常断电,会导致数据丢失。
而且断电后很容易导致表损坏,需要进行表修复

myisamchk -r   tablename

三.InnoDB存储引擎

功能 是否支持
B-tree索引 yes
备份/基于时间点的恢复
恢复基于mysql的binlog而不是存储引擎
yes
集群数据库 no
聚簇索引 yes
数据压缩 yes
数据缓存 yes
数据加密 yes(在服务器中通过加密功能实现)
外键 yes
全文索引 yes(MySQL 5.6版本开始支持)
空间数据 yes
空间索引 yes(MySQL 5.7版本开始支持)
哈希索引 no
索引缓存 yes
锁级别 行锁
MVCC(多版本并发控制) yes
复制支持 yes(server级的binlog)
存储限制 64TB
T-tree 索引 no
事务 yes
更新数据字典的统计信息 yes

如果非必要情况,建议所有的表都使用InnoDB存储引擎,数据保护级别更高,维护也更方便。

四.Memory存储引擎

功能 是否支持
B-tree索引 yes
备份/基于时间点的恢复
恢复基于mysql的binlog而不是存储引擎
yes
集群数据库 no
聚簇索引 no
数据压缩 no
数据缓存 N/A
数据加密 yes(在服务器中通过加密功能实现)
外键 no
全文索引 no
空间数据 no
空间索引 no
哈希索引 yes
索引缓存 N/A
锁级别 表锁
MVCC(多版本并发控制) no
复制支持 Limited (See the discussion later in this section.)
存储限制 RAM
T-tree 索引 no
事务 no
更新数据字典的统计信息 yes

Memory存储引擎适用场景:
1.频繁被访问的字典表(读多写少)
2.数据分析中的中间结果
3.ETL过程中的中间结果表

猜你喜欢

转载自blog.csdn.net/u010520724/article/details/107756102