存储引擎

1. MyISAM 和InnoDB 区别

  • MyISAM (MySQL 5.5 之前的默认数据库引擎)
    • 性能极佳,并且提供了大量特性,包括全文索引、压缩、空间函数等
    • 不支持事务和行级锁
    • 最大缺陷崩溃后无法安全恢复
  • InnoDB(MySQL 5.5 之后的默认存储引擎):
    • 事务性数据库引擎

1.1 适合场景

  • InnoDB存储引擎

    大多数场景,但是某些情况下使用 也是适合的如

  • MyISAM 存储引擎

    读密集的情况下(不介意MyISAM 崩溃恢复问题)

1.2 两者对比

MyISAM InnoDB
是否支持行级锁 只有表级锁(table-level locking) 支持行级锁(row-level locking)和表级锁,默认行级锁
是否支持事务 不支持 支持
崩溃后的安全恢复 不支持 支持
支持外键 不支持 支持
支持MVCC 不支持 支持

1.3 MVCC

  • 在应对高并发事务,MVCC 比单纯的加锁更高效,
  • MVCC 只在READ COMMITED 和 REPEATABLE READ 两个隔离级别下工作。

  • MVCC 可以使用乐观(optimistic)锁和 悲观(pessimistic)锁来实现

2. 查看存储引擎

2.1 查看MySQL提供的所有存储引擎

mysql> show engines;

image-20190902000239425

从上图我们可以出Mysql 当前的默认存储引擎是InnoDB,也提示了innoDB 支持事务,行级锁等特性

2.2 查看MySQL 当前默认的存储引擎

show variables like '%storage_engine%';

image-20190902000442313

2.3 查看表的存储引擎

show table status like "t_user";

results matching ""

    No results matching ""