InnoDB和MyISAM两种数据库存储引擎的对比

存储引擎相关命令

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

show engines;

在这里插入图片描述
从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有
InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。
我们也可以通过下面的命令查看默认的存储引擎。

show variables like '%storage_engine%';

在这里插入图片描述
可以发现默认使用的为InnoDB存储引擎。

查看表的存储引擎

show table status like "table_name" ;

在这里插入图片描述

大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的比如读密集的情况下,以读取数据为主要业务,或者即使存在写数据,也不是什么重要的数据的情况下可以选择用MyISAM。

两者的对比

  1. 是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level
    locking)和表级锁,默认为行级锁。
  2. 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行速度比
    InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库
    功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安
    全(transaction-safe (ACID compliant))型表。
  3. 是否支持外键: MyISAM不支持,而InnoDB支持。
  4. 是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ
    COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲
    观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43750656/article/details/106766879
今日推荐