面试题04(数据库&Linux)

InnoDB 和 MyISAM 引擎


区别
Java极客链接

一、底层的文件结构

InnoDB 引擎的数据表底层只有.frm 和 .ibd 两种格式的文件

.frm 同样用于存放表的数据结构
.ibd 文件用于**存储数据****索引**的文件

MyISAM 引擎的表底层有 .MYD,.MYI 和 .frm 三种格式的文件

.frm 用于存储表结构的文件
.MYD 全称为 .mydata 用于存放数据的文件
.MYI 全称为 .myIndex 用于存放索引的文件

InnoDB 的数据和索引是存放在同一个文件中的而 MyISAM 的数据和索引是分开存储的,这也导致两者的索引的实现方式的不同

二、索引的实现方式

InnoDB 的索引采用 B+ 树实现,主键索引的叶子节点存储的是完整的数据,辅助索引的叶子节点存储的是主键的值。所以如果在使用辅助索引进行查询数据的时候是会有回表的操作,所以我们尽量用主键进行查询。另外如果建表的时候没有设置主键的话,InnoDB 引擎会自动生成一个 rowid 作为表的主键。
MyISAM 的索引也是采用 B+ 树实现的,与 InnoDB 不同的是,MyISAM 主键索引的叶子节点和辅助索引保存的都是数据的地址,主键索引并没有保存完整的数据,所以都需要根据数据地址再次查询数据。

三、事务的支持

InnoDB 与 MyISAM 另一个最大的区别就是 InnoDB 支持事务,而 MyISAM 不支持事务。事务也是 MySQL 另外一个常规问题,我们下面看下事务的相关知识。
事务的四大特性 ACID
A: 原子性。原子性表示事务的操作是不可分割的,事务内的一系列操作全部成功事务才成功,任何一个操作失败事务都是失败,必须回滚。
C: 一致性。一致性表示事务在操作前和操作后数据都是处于一致的状态。只表示在事务的操作前后的数据一致,但是并不是代表是正确。
I:隔离性。事务的并发操作是完全隔离的,不同的事务之间不会相互有影响。事务的隔离级别有四种

读未提交:表示一个事务内可以读取到另一个事务未提交的数据内容,会出现脏读,不可重复度,幻读。
读已提交:表示一个事务内可以读取另一个事务已经提交的内容,会出现不可重复读和幻读。
可重复读:表示一个事务内两次相同条件读的内容一致,但是会出现幻读。
串行化:没有问题,但是效率低下。

D:持久性。事务操作结束过后,对数据的更改是可以持久化的,不管事务的操作是成功还是失败,事务日志都能保证事务的持久性。
解释

脏读:指一个事务 A 读取到另一个事务 B 未提交的数据,也就是脏数据。 不可重复读:指一个事务 A 第一次根据条件查询某条数据,事务 B
修改了该数据并提交了,事务 A 第二次查询与第一次查询的不一致。
幻读:指事务 A 根据条件查询一批数据,事务 B
插入了新的满足条件的数据,事务 A 再次查询数据量变化了,两次查询的结果集不一致,出现了幻读。

四、锁相关

InnoDB 支持表级锁和行级锁,MyISAM 只支持表级锁。事务的如今的互联网海量数据的场景下基本上是无法摆脱的,这种情况下对数据库的锁的要求就要更细粒度。新版本的 MySQL 默认的数据库引擎是 InnoDB 很大的原因就是 InnoDB 支持行级锁,在日常的业务场景下,我们是不能允许使用表级锁的,对业务的影响是很大的。
InnoDB 的锁分为共享锁 S 和独占锁 X,意向共享锁 IS,意向独占锁 IX,记录锁,间隙锁以及 next-key 锁。关于锁的详细信息可以回顾公号之前发过的文章 面试你应该知道的 MySQL 锁

五、linux操作:列举文件 查文件大小 查进程?

.Linux更改环境变量有什么方法(export)我不想每次都要改怎么办(.bashrc)这个文件在哪(/root)我不想每个人都改(那就去到你用户的主目录那改);杀进程用什么,假如kill不掉用什么kill -9

六、SQL的left join和inner join

数据库的索引、主键设计自增、数据库建表建库
外键干啥用的?大型企业为什么不用外键
外键用来链接表 你知道大型数据库数仓怎么链接
SQL 索引 联合索引 索引的数据结构是什么 数据库之间的连接用什么

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值