前言

好文章不要错过,前两天跟大家分享的文章

1.MySQL的基础架构
2.SQL语句的执行流程

今天跟大家讲一讲 MySQL 的存储引擎。


MySQL 的存储引擎介绍

存储引擎是什么?

答:存储引擎是MySQL 用于存储数据的,数据的读写,更新都将在存储引擎执行。

存储引擎的特性?

答:存储引擎是插件式存储引擎,常见的存储引擎有 Innodb,MyLSAM,Memory等,MySQL之前默认的存储引擎是 MyLsam,但是在MySQL 5.5.5以后默认的存储引擎是 Innodb。一开始Innodb是第三方的存储引擎,但是实在太优秀了,就被oracle收购… 这难道就是钞能力???

那么,Innodb 到底优秀在哪里呢?下面我们来说一说。

Innodb 与 Mylsam 的区别

行级锁与表级锁

Innodb 是基于行级锁的存储引擎,MyLsam 是基于表级锁的存储引擎。试想一下在更新数据库是锁住整个表执行,与基于行级锁,锁住一条数据执行。这性能差别是十分之大的。

是否支持事务

Innodb 是支持事务的,这也是它区别与其他存储引擎一个重要的原因,四种事务的隔离级别,它默认是可重复读,解决不可重复读与脏读的事务级别。

Mylsam 是不支持事务的。

是否支持恢复数据

如果 MySQL 崩溃,Innodb 基于它自带的日志模块 redo log,是可以支持恢复以往的数据的,恢复速度快。

Mylsam 是恢复数据的话相比于 Innodb 恢复极慢。

是否支持外键

Innodb 是支持外键的,虽然根据阿里的Java开发手册,是不允许使用外键的。

Mylsam 是不支持外键的。

是否使用外键,还是要根据具体的项目的业务开发。使用外键不会导致业务数据的混乱,但是会有一定的约束。

是否支持 MVCC

Innodb 支持 MVCC,MVCC 是多版本控制工具,是行级锁的深入的实现。

Mylsam 不支持。


总结

总的来说,存储引擎是MySQL 用于存储读写数据的。常用的存储引擎有 Innodb, MyLSAM,Memory等。其中 Innodb 的性能最快。也是 MySQL 5.5.5 之后默认的存储引擎。

有启发点个赞 🌹

预计下篇分享:MySQL 索引入门

本篇参考:JavaGuide

02-21 18:49