聊聊如何理解MySQL引擎--Innodb和MyISAM和Memory

mysql的常见的引擎有许多比如,MYISAM、Innodb、Memory、MERGE。可以通过

mysql> show engines; 

查看数据库提供的引擎:

我们今天聊聊如何理解Innodb和MyISAM,Memory,这是面试时会问的问题。

首先是Innodb:

先上概念:

Innodb:行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持 外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些。

如何理解里面的行级锁、事务、外键呢

举个通俗的例子

现在想象另一个图书馆,这个图书馆的每个书架都有一个小门,而且图书馆有一个先进的借书系统。这个系统允许读者借书和还书(支持事务),并且确保没有人能同时借走同一本书(支持外键)。这个图书馆的每个书架的小门就是InnoDB的行级锁,这意味着即使有人正在阅读某本书,其他人仍然可以进入其他书架阅读。这个图书馆的空间占用更大,因为它需要更多的门和更复杂的借书系统,但是它提供了更好的服务和更高的并发能力。

 然后是MyISAM

先上概念:

MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间 相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎

 如何理解呢,可以对比Innodb

想象一下你有一个图书馆,这个图书馆的书架上摆满了书,但是图书馆只有一个大门。这个大门就是MYISAM的全表锁。当有人想进入图书馆阅读书籍时,他们必须通过这个大门。如果有人正在图书馆内,其他人就得在外面等待,直到图书馆空出来。这个图书馆的管理员(数据库)可以很快地添加新书(插入数据)和找出书籍(查询数据),但是它不提供借书服务(不支持事务),也不检查是否有人已经借了这本书(不支持外键)。这个图书馆的空间占用相对较小,因为它只需要一个大门和一些书架。

最后是Memory

先上概念:

Memory:全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在 mysql重启时会丢失,默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于 那些内容变化不频繁的代码表

理解 :

想象一个电子图书馆,所有的书籍都是以电子形式存储在内存中的。这个图书馆的访问速度非常快,因为所有的书籍都在内存中,就像直接从电脑的RAM中读取数据一样。但是,如果图书馆的电源被切断(MySQL重启),所有的书籍都会消失(数据会丢失)。这个图书馆适合那些不需要长期保存的书籍,比如临时的参考资料或者经常查阅的法律条文。

 通过这些例子,我们可以看到每种存储引擎的特点和适用场景。选择哪种存储引擎取决于我们的应用需求,比如事务支持、并发能力、空间占用和数据持久性等。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值