MySQL常用的存储引擎

1、MySQL中常用的存储引擎

引擎名称 是否支持事务 说明
MyISAM N MySQL 5.6 之前的默认引擎,最常用的非事务引擎;
CSV N 以CSV格式存储数据,非事务型引擎;
Archive N 只允许查询和新增数据而不允许修改数据;
Memory N 将数据存储在内存中,不支持事务;
InnoDB Y MySQL 5.6 之后的默认引擎,最常用的事务型存储引擎;
NDB Y MySQL集群版使用的内存型事务存储引擎;

2、MyISAM

  • 特点:

    1. 不支持事务;
    2. 堆表的方式存储,无聚集索引,避免了索引二次查找,提高了查找性能(查找性能优于InnoDB);
    3. 使用表级锁,在查找时会给表加上共享锁,修改表时会给表加上排它锁,读写会相互阻塞;
    4. 支持Btree索引空间索引全文索引
  • 适用场景:
    不需要事务,读操作远大于写操作的场景;

3、CSV

  • 特点:

    1. 不支持事务
    2. 数据以CSV格式存储,可通过直接修改CSV文件来修改数据库数据;
    3. 所有列都不能为NULL;
    4. 不支持索引
  • 适用场景:适合作为数据交换的中间表,不适用于频繁查询、更新的场景;

4、Archive

  • 特点:

    1. 不支持事务
    2. 表数据使用 Zlib 压缩,节省存储资源;
    3. 只支持 Insert 和 Select 操作,不能修改和删除数据
    4. 只允许在自增ID上建立索引
  • 适用场景:日志和数据采集类应用; 数据归档存储;

5、Memory

  • 特点:

    1. 不支持事务
    2. 数据保存在内存中,读写速度快,宕机会失去数据;
    3. 所有字段长度固定(char和varchar占用相同大小的空间),且不支持text等类型;
    4. 支持Btree索引Hash索引,默认为Hash索引;
  • 适用场景:用于缓存字典映射表; 缓存周期性分析数据; 与Redis功能相似;

6、InnoDB

  • 特点:

    1. 支持事务 ACID
    2. 数据按主键聚集存储,主键的大小会影响索引的性能,若主键顺序经常发生变化,会造成数据迁移或带来某些IO问题;
    3. 支持行级锁,读写时只在行上加锁,大大增强了其处理并发业务的性能;
    4. 支持MVCC(多版本并发控制),可以避免读写阻塞;
    5. 支持Btree索引、自适应Hash索引、全文索引、空间索引;
  • 适用于大多数OLTP场景

7、NDB

  • 特点:

    1. 支持事务
    2. 使用时会把数据全都加载到内存中;
    3. 支持高可用集群
    4. 支持Ttree索引
  • 适用场景: 需要数据完全同步的高可用场景;

你可能感兴趣的:(MySQL,基础知识)