思维导图:
扩展知识
1.什么是存储引擎?
官方理解: ● 数据库中负责存储、管理、检查、维护数据的一个组件,定义了数据如何在磁盘或者内存中:存储、索引、更新、查找等具体实现方式、 个人理解: ● 我们往仓库放东西,不同的东西,需要用不同的打包方式,不同的打包盒,然后放到不同的货架,然后打包盒和货架上需要贴不同的标签,这个打包盒、打包方式、货架、标签,这四步可以组成一个整体的打包过程,这个打包过程 需要一个高大上的名字 于是起名为:存储引擎 个人理解和官方概念关联: ● 仓库-数据库:存储不同类型的数据(例如:用户信息、订单记录、日志等) ● 打包盒-数据结构:不同的存储引擎使用不同的数据结构存储数据 ● 打包方式-事务处理和锁机制:存储引擎决定如何安全的处理数据的插入、更新、删除操作 ● 放置货物的区域-存储介质:存储引擎会将数据存放在不同的位置,例如:磁盘、内存, ● 打包盒上标签和货架上标签-索引机制:存储引擎根据索引快速定位到数据存储在哪里
2.为什么需要不同的存储引擎?
官方理解: ● 不同的存储引擎,有不同的特性,适用于不同的场景。 个人理解: ● 就像我们的仓库,地方很大,我们的客户往仓库里存东西的时候,每个客户的东西是不一样的,那么不同的货物,需要不同的处理方式,以保证我们客户的货物,可以安全的存放,快速的拿取,同理,我们的应用程序就像客户,不同的应用程序,有不同的数据,我们数据库针对各种数据,需要有合适的存储和检索方式,于是我们需要不同的存储引擎
3.怎么理解不同的存储引擎?
个人理解: ● 把我们的数据库比作一个连锁超市,超市分:生鲜区、干货区、临时促销区、赠品区、收银台,除了线下的实体店,还有线上的app ● 生鲜区(InnoDB):这里的商品(数据),需要特别的照顾,因为他们容易变质(数据损坏或丢失),所以这里配备了冷藏设备(事务支持)、保鲜膜(行级锁)和备用制冷器(崩溃恢复)。如果我们在生鲜区上架了商品(插入或更新),即使中途突然断电了(系统崩溃),那我们上架的商品,也不会坏掉(数据丢失)。 ● 干货区(MyISAM):这里的商品(数据),不容易变质,所以可以大批量进货(批量插入数据),也因为不容易变质,所以货物放在一个普通的分类盒中(不支持事务),分类盒有一个整体的盖子(表级锁),买东西的时候,盖子被打开,可以很多人一块,批量的买(读取性能好),平时的时候,盖子是合住的,于是需要上货的时候,需要先打开盖子(表级锁),所以上货的时候比较慢(写性能慢) ● 临时促销区域(Memory):这里的商品(数据)都放在收银台最近的桌子上(内存区),所以拿取的时候很快,但是超时今天关门后(系统重启)明天就没有了(数据不持久) ● 赠品区(CSV):这里的商品都是用手提袋装好的(CSV文件),如果感觉当前存放的位置不合适,想放到别的地方,可以很简单的搬过去(导出到Excel或者其他程序) ● 收银台(Archive):收银台里已完成的订单,已经存放起来,不再经常使用(归档数据),并且只能新增和查看,不能修改或删除 ● 线上App(NDB):这是连锁超市的官方App,App里的商品,每个线下店(节点)里都有对应的商品(数据),并且他们之间实时同步。即使某个分店关门了,也可以从其他店拿取到商品。