提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一致性Consistency.隔离性Isolation.持久性Durability)可以说涵盖了事务的全部知识点,所以,我们不仅要知道ACID是什么,还要了解ACID背后的实现,只有这样,无论在日常开发还是面试求职,都能无往而不利. 上一篇 跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现 主要围绕“隔离性”展…
提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一致性Consistency.隔离性Isolation.持久性Durability)可以说涵盖了事务的全部知识点,所以,我们不仅要知道ACID是什么,还要了解ACID背后的实现,只有这样,无论在日常开发还是面试求职,都能无往而不利. 为了大家更好的阅读体验,对ACID的深入分析将分为上下两篇. 本篇为上篇,主要围绕ACI…
面试官:你是怎么理解InnoDB引擎中的事务的? 候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败 候选者:事务其目的是为了「保证数据最终的一致性」. 候选者:举个例子,我给你发支付宝转了888块红包.那自然我的支付宝余额会扣减888块,你的支付宝余额会增加888块. 候选者:而事务就是保证我的余额扣减跟你的余额增添是同时成功或者同时失败的,这样这次转账就正常了 面试官:嗯,那你了解事务的几大特性吗? 候选者:嗯,就是ACID嘛,分别是原子性(Atomicity).一致性(…
作者:小林coding 图解计算机基础网站:https://xiaolincoding.com/ 大家好,我是小林. 之前写过一篇 MySQL 的 MVCC 的工作原理,最近有读者在网站上学习的时候,评论区指出了一些问题. 而这个知识点很重要,面试太常问了,所以,我就重写了这篇文章!开车! 正文 这是我的钱包,共有 100 万元. 今天我心情好,我决定给你的转账 100 万,最后的结果肯定是我的余额变为 0 元,你的余额多了 100 万元,是不是想到就很开心? 转账这一动作在程序里会涉及到一系列…
一.事务 事务是由一组SQL语句组成的逻辑处理单元,是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚.事务具有以下4个属性,通常简称为事务的ACID属性: 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行.比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败.回滚可以用日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可. 一致性(Consiste…
写在前面 马上就是金九银十的跳槽黄金期了,很多读者都开始出去面试了.这不,又一名读者出去面试被面试官问了一个MySQL的问题:向MySQL中插入数据,如何实现MySQL中没有当前id标识的数据时插入数据,有当前id标识的数据时更新数据.其实,这题目一点也不难!! 先来个简单题目 正式回答这个面试题时,我们先来看一个简单点的题目:如何实现向MySQL中插入数据时,存在则忽略,不存在就插入?其实,这个简单点的题目与标题的题目有相同的地方:都是MySQL中不存在待插入的数据时,就将待插入的数据插入到M…
Mysql 事务及其原理 什么是事务 什么是事务?事务是作为单个逻辑工作单元执行的一系列操作,通俗易懂的说就是一组原子性的 SQL 查询.Mysql 中事务的支持在存储引擎层,MyISAM 存储引擎不支持事务,而 InnoDB 支持,这是 Mysql 5.5.5 以后默认引擎由 MyISAM 换成 InnoDB 的最根本原因. 事务的 ACID 属性 原子性(Atomicity):作为逻辑工作单元,一个事务里的所有操作的执行,要么全部成功,要么全部失败. 一致性(Consistency):数据库…
问题:请讲下mysql的事务是如何实现的 分析:该问题主要考察对事务的理解及实现方式: 回答要点: 主要从以下几点去考虑, 1.对事务的概念的理解? 2.事务的实现方式? 讲到mysql的事务,很快可以想到事务的4大特性,那就是ACID,具体说来就是原子性.一致性.隔离性.持久性.也就是说事务就是围绕这4个特性来展开的.其中隔离性中又定义了隔离级别,有读未提交.读已提交.可重复度.可串行化这样4个级别. 对于事务的4个特性,原子性.一致性.持久性说的都是mysql的可靠性方面的考量,对应隔离性说…
一个工作了3年的粉丝私信我,在面试的时候遇到了这样一个问题. "请说一下ReentrantLock的实现原理",他当时根据自己的理解零零散散的说了一些. 但是似乎没有说到关键点上,让我出一期说一下回答思路. 好吧,关于这个问题,我们来看看普通人和高手的回答. 普通人: ReentrantLock的一个实现原理,他是一种重入锁然后也是一种重入的一个排它锁. 它会去解决我们在多个线程的并行去访问某一些共享资源的时候,我就可以通过ReentrantLock去加锁. 实现原理就是通过AQS来实…
MySQL事务隔离级别的实现原理 知识储备 只有InnoDB支持事务,所以这里说的事务隔离级别是指InnoDB下的事务隔离级别 隔离级别 读未提交:一个事务可以读取到另一个事务未提交的修改.这会带来脏读,幻读,不可重复读问题 读已提交:一个事务只能读取另一个事务已经提交的修改.其避免了脏读,仍然存在不可以重复读和幻读问题 可重复读:同一个事务中多次读取相同的数据返回的结果是一样的.其避免了脏读和不可重复读问题,但是幻读依然存在 串行化:事务串行之行.避免了以上所有问题 以上是SQL-92标准中定…