跳至主要內容

Mr.Hope大约 2 分钟

InnoDB 引擎

MySQL 5.1 版本后默认的数据库引擎,提供了对数据库 acid 事务的支持,并且还提供了行级锁和外键的约束,它的设计的目标就是处理大数据容量的数据库系统。MySQL 运行的时候,InnoDB 会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎是不支持全文搜索,同时启动也比较的慢,它是不会保存表的行数的,所以当进行 select count(*) from table 指令的时候,需要进行扫描全表。由于锁的粒度小,写操作是不会锁定全表的,所以在并发度较高的场景下使用会提升效率的。

适合对事务完整性要求较高,在并发条件下对数据一致性要求较高,除了查询和插入,还有很多更新和删除操作的场景。

  • 事务支持:InnoDB支持ACID事务(原子性、一致性、隔离性、持久性),并实现了标准的行级锁定和外键约束。
  • 崩溃恢复:通过使用日志文件,InnoDB提供了崩溃恢复功能。
  • 行级锁定:支持高并发的行级锁定机制,减少锁争用,提高多用户并发访问的性能。
  • 外键约束:支持外键约束,保证数据的完整性。

MyISAM 引擎

MyISAM 是MySQL 5.1以及之前的版本默认的存储引擎。MyISAM 适合以读和插入操作为主,很少更新和删除,并且对事务完整性和并发性要求不高的场景。

  • 不提供事务的支持,也不支持行级锁和外键。 因此当执行插入和更新语句时,即执行写操作的时候需要锁定这个表,所以会导致效率会降低。不过和 InnoDB 不同的是,MyISAM 引擎是保存了表的行数,于是当进行 select count(*) from table 语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的,可以将 MySQL 作为数据库引擎的首选。
  • 表级锁定:使用表级锁定机制,读写操作可能会相互阻塞。
  • 全文索引:支持全文索引,适用于需要全文搜索的应用。
  • 存储效率高:由于没有事务日志,MyISAM存储效率较高。

MEMORY 引擎

MEMORY 引擎将所有数据存储在内存,实现快速访问。缺点是对表的大小有限制,无法缓存太大的表。适合更新不太频繁的小表,实现快速访问的场景。

  • 内存存储:数据存储在内存中,读写速度极快,但数据在服务器重启时会丢失。
  • 表级锁定:使用表级锁定机制。
  • 哈希索引:默认使用哈希索引,适用于等值查询。