这样去理解MySQL的存储引擎,面试官都对我拍手叫好了,2024年最新35岁技术人如何转型做管理

一般来说,如果没有什么其他特殊的需求,InnoDB存储引擎是使用MySQL创建数据表的首选。

MyISAM

在MySQL5.1以前,MyISAM存储引擎是MySQL是默认存储引擎,MyISAM支持表级锁定,并不支持事务,比较适合大量的select和insert操作。

InnoDB与MyISAM存储引擎之间的比较

下面我们以下几个方面来比较一下这两个存储引擎的不同。

事务的支持

InnoDB支持ACID的事务处理,MyISAM并不支持事务,这里需要注意,如果我们在程序需要进行事务处理,所有的数据都要使用Innodb存储引擎,如果中间有MyISAM存储引擎的数据表,如果进行事务回滚,MyISAM并不会回滚到之前的状态,因此MyISAM不支持事务。

索引与主键处理

InnoDB存储引擎使用的是聚集索引,InnoDB主键的叶子节点是该行的数据,而其他索引则指向主键,而MyISAM存储引擎使用的是非聚集索引,主键与其他索引的叶子节点都存储了指向数据的指针。

另外一个是MyISAM数据表允许没有主键和其他索引,而InnoDB数据表如果没有主键的话,而会生成一个用户不可见6字节的主键。

外键

MyISAM不支持外键,而Innodb则支持建立数据表之间的外键关联。

存储文件的不同

Innodb存储文件有frm、ibd,而MyISAM是frm、MYD、MYI,Innodb存储文件中frm是数据表结构定义文件,ibd是数据文件,MyISAM中frm是数据表结构定义文件,MYD是数据的文件,MYI则是存储索引的文件。

select count(*)

使用MyISAM存储引擎的数据表会记录一个数据表的总行数,所以对使用MyISAM存储引擎的数据表进行select count(*),可以很快得到一个数据表的总行数,而对于InnoDB存储引擎的数据表,想要查询总行数需要进行全表扫描才能得到。

锁的级别

InnoDB支持行级锁,而MyISAM只支持表级锁,因此InnoDB更能支持高并发。

设置默认存储引擎

上面我们说过,InnoDB是MySQL的默认存储引擎,当然我们也可以设置其他存储引擎为默认存储引擎,有两种方式进行设置,如:

服务器启动时设置

在服务器启动时,使用–default-storage-engine命令可以设置默认存储引擎:

mysqld --default-storage-engine=MyISAM

上面指定的是正常数据表的存储引擎,临时表的默认存储也可以使用–default-tmp-storage-engine参数来设置:

mysqld --default-tmp-storage-engine=MyISAM

通过set命令设置

除了在启动MySQL服务器时设置外,在进行登录到服务器中后,也可通过SET命令来设置默认存储引擎:

指定普通数据表的默认存储引擎:

SET default_storage_engine=MyISAM;

指定临时数据表默认存储引擎:

SET default_tmp_storage_engine=MyISAM

为数据表设置存储引擎

为数据表指定存储引擎有两种情况,一种是在使用CREATE TABLE语句创建数据表的时,另外一种则是对于已经创建好的数据表。

建表时

当我们在创建数据表的时候,如果没有指定存储引擎,则会使用上面设置的默认存储引擎,比如我们下面的建表语句:

CREATE TABLE users(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
gender TINYINT NOT NULL,
email VARCARH(50) NOT NULL,
PRIMARY KEY(id)
);

如果我们在创建数据表时,不想用默认的存储引擎,则可以在CREATE TABLE语句后指定ENGINE参数来设置存储引擎,如:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习

还有更多学习笔记面试资料也分享如下:

都是“Redis惹的祸”,害我差点挂在美团三面,真是“虚惊一场”

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中…(img-THodlSyo-1712768038412)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值