MySQL系列一:掌握MySQL底层原理从学习事务开始

本文作为MySQL系列的第一篇,从事务入手探讨数据库底层原理,包括事务的ACID特性、redo log与binlog、两阶段提交、MVCC等关键概念。详细解释了MySQL中update语句的执行流程,以及事务隔离级别的实现方式,强调事务对于数据一致性和并发控制的重要性。通过对MySQL事务的深入理解,有助于提升面试和实际操作中的问题解决能力。
摘要由CSDN通过智能技术生成

前言

面试时候,经常会被问到什么是事务、事务的特征、事务的隔离级别这些八股文问题,凭死记硬背通常也可回答的七七八八。但是面试官一旦换个角度问这些问题,有时候可能就语塞了。

所以学一个知识,我总在想有没有那样一个万变不离其宗的底层知识,我掌握了它便能一通百通,相关问题我就都会了,比如面试官问这些问题:

  1. 写线程操作一条数据,另外一个读线程也在读取这条数据,写线程还没有提交事务,读线程已经读到更改后的数据了,此时数据库的隔离级别是什么?
  2. 可重复读的使用场景举例?
  3. 事务隔离是怎么通过视图实现的?
  4. 读已提交、可重复读是怎么通过视图构建实现的?
  5. 二阶段提交了解吗?redo log、binlog了解吗?都有什么用处?
  6. 并发版本控制(MVCC)的概念是什么, 是怎么实现的?
  7. 什么是长事务?怎么查询各个表中的长事务?
  8. 使用长事务有什么问题?如何避免长事务的出现?

是不是感觉自己掌握的还不够精细?是不是感觉自己离三万月薪还差一点?

同样关于网络的知识也是如此,面试时会经常被人问到三次握手、四次挥手的过程。

那到底三次握手、四次挥手是为了什么?

为什么是三次握手、四次挥手?

四层负载、七层负载的区别是什么?

七层负载的瓶颈是什么?

四层负载又有什么样的问题?

。。。

最难的就是网络了,他是一切分布式、高并发的基础,不可能背一些面试题,看几本书就能说自己精通网络编程了,必须持续学习,举一反三。

所以我的想法是,学习技术不能只是在面试的时候临时抱佛脚,每一个知识点挖进去都是一个新的世界等着你去探索,这需要大量的业余时间来学习,且持续。

本文是学习MySQL底层原理的第一篇,我个人认为学习MySQL一定要从事务开始,也就是先保证数据的一致性(事务、锁),然后再去考虑怎么提升性能(索引)。

本文包含内容:MySQL的事务以及日志、二阶段提交、MVCC等相关知识。

 

Action

MySQL中,事务的支持是在引擎层的,然而MySQL原生的MyISAM引擎并不支持事务,因此逐渐被支持事务的InnoDB引擎所取代。

那你知道InnoDB引擎的由来吗?

 

InnoDB的历史

学习事务,除了事务的概念外,我们还应该要学习以下知识点:

  1. redo log:物理日志,也叫重做日志
  2. binlog:逻辑日志,也叫归档日志<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值