事务的四大特性及实现原理
事务的四大特性及实现原理
1.原子性(Atomicity)
不可再分,事务的最小单位。在一个事务中,我们对数据库的操作,要么都成功,要么都失败,不可能出现部分成功或部分失败的情况。若操作失败必须回滚。
原子性在innodb是通过undo log实现的,它记录了数据修改之前的值(逻辑日志),一旦发生异常,就可以用undo log实现回滚的操作。
2.一致性(Consistency)
指的是数据库的完整性约束没有被破环,事务执行的前后都是合法的数据状态。比如主键必须是唯一,字段长度符合要求。除了数据库自身的完整性约束,还有事用户自定义的完整性。
3.隔离性(Isolation)
有了事务的定义之后,在数据库里面会有很多事务同时去操作我们的同一张表或同一行数据,必然会产生一些并发或干扰操作,那么我们对隔离性的定义,就是这些很多个事务对同表同行的操作应该是透明的,互不干扰的。通过这种方式,我们最终也是保证业务数据的一致性。
4.持久性(durability)
我们对数据库的任意操作,增删改,只要事务提交成功后,那么结果就是永久性的,不可能因为系统宕机或重启数据库的服务器恢复到原来的状态。这就是事务的持久性。
持久性是通过redo log来实现的,我们操作数据时,会先写到内存中的bufferpool中,同时记录redo log,如果在刷盘前出现异常,在重启后就可以读取redo log的内容,写入到磁盘,保证数据的持久性。
原子性,隔离性,持久性,最后都是为了实现一致性!
事务的四大特性及实现原理相关推荐
- 怎么实现事务_你可能知道事务的四大特性,但是不一定知道“事务的实现原理”...
说到数据库,那就一定会聊到事务,事务也是面试中常问的问题,我们先来一个面试场景: 面试官:"事务的四大特性是什么?"我:"ACID,即原子性(Atomicity).隔离性 ...
- mysql数据库事务四大特性的实现原理
事务的四大特性 原子性.一致性.隔离性.持久性 原子性实现 原子性保证事务要么全执行成功,要么全不执行. mysql使用回滚机制实现,undo log实现回滚. 事务执行 insert.update. ...
- MySQL数据库事务的四大特性
MySQL数据库事务的四大特性以及事务的隔离级别_l1394049664的博客-CSDN博客_mysql数据库事务 深入学习MySQL事务:ACID特性的实现原理 - 编程迷思 - 博客园
- MySQL数据库中的事务(四大特性)
1. 事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元. 2. 事务的四大特性 原子性(Atomicity) 一 ...
- 数据库事务的四大特性和隔离级别
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部都不执行. 一个逻辑工作单元要成为事务,必须满足事务的四大特性(ACID).即 ...
- 数据库事务的四大特性以及事务的隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- 数据库事务的四大特性ACID
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- 数据库事务的四大特性以及事务的隔离级别详解
作者 : fjdingsd 来源 : 博客园 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...
- 事务的四大特性、事务处理开始与结束、v$transactio、 v$LOCK
数据库事务的四大特性:ACID 事务的4大特性(ACID): 原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行.一致性(Consistemcy): ...
最新文章
- RStudio启动后修改文件(数据)读取默认目录
- CNN笔记:通俗理解卷积神经网络
- 算法 | RASAC 入门
- Codeforces Round #552 (Div. 3) —— A. Restoring Three Numbers
- 带你体验云原生场景下 Serverless 应用编程模型
- VC打包程序,并修改注册表(详细以后补充)
- Spring中使用JdbcTemplate和HibernateTemplate的数据库操作
- Wireshark常用封装过滤规则
- Rapid7 部分源代码遭泄露,成 Codecov 供应链攻击第四个受害者
- Ehlib 单元格 图像绘制 代码
- js扁平数组对象转成树结构
- 使用MLM和TLM训练XLM
- Smartdrv在安装操作系统中的作用
- 华为云 CentOS 镜像源配置
- 14年和15年的IT公司排行
- 懒虫读诗 (树形dp+分组背包)
- 大学英语精读第三版(第六册)学习笔记(原文及全文翻译)——6B - John Thomas’s Cube(约翰·托马斯的立方体)
- opencv-------高斯滤波
- Android模拟器横屏和竖屏的切换
- android怎么测试网速,Android网速测试App(三)
热门文章
- 达人评测 联想小新 Air 14/15 2021 酷睿版怎么样
- Android-x86-6.0定制之路 - 动态显示、隐藏状态栏和导航栏(广播方式)
- Java --怎么把long类型转换成int
- HDFS中的白名单和黑名单
- 3.12 五角星的创意变形 [Illustrator CC教程]
- 最全的java对接微信小程序客服功能实现(包含自动回复文本消息、图片消息,进入人工客服)
- python中对中文列表排序,超简单!!!
- bacula 备份mysql_bacula备份方案
- Ubuntu无wifi图标
- 解决windows系统wifi图标不见了的问题