事务的 ACID 特性|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 快速学习事务的 ACID 特性

开发者学堂课程【MySQL 实操课程事务的 ACID 特性】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/717/detail/12813


事务的 ACID 特性

 

目录:

一、MySQL 事务管理主要内容

二、事务的 ACID 特性

三、MySQL 对事务的支持

 

一、MySQL 事务管理主要内容

MySQL 事务管理主要分成以下四部分:

1、事务的 ACID 特性

什么是事务、事务的特性、ACID 特性的特点等内容。

2、MySQL 下事务的开启、提交、回滚语句应用

MySQL 下默认处理事务的策略;MySQL 默认处理事务是采用自动提交的方式;调整策略;事务开启后做提交和回滚等手动处理。

3、MySQL 事务下 truncate 和delete 的差异

前面课程中学习过 truncate 和 delete 删除数据的两种方式,并且做对比。那么,在 MySQL 事务下 truncate 和 delete 的操作有什么差异。

4、MySQL 下事务的四种隔离级别

每一种隔离级别的定义和力度;对于数据操作时的表现形式等。

 

二、事务的 ACID 特性

1、什么是事务

事务是对数据库连续的操作。一般这种操作涉及到对数据更新处理。这些更新操作是不可分割的逻辑单元。如果事务被成功的执行,那事务中所有的更新操作都会被成功的执行,并将执行的结果提交到数据库文件中,成为数据库永久的组成部分。如果该事物执行失败,那这个事务所有的操作都会被撤销,也就是所有的工作都失效。简单理解,事务中的所有操作要么全部执行,要么全部都不执行。

2、事务的 ACID 特性包括以下几点:

(1)原子性 (Atomicity)

事务中包含的所有操作要么都做 ,要么都不做,保证数据库是一致的

类似于银行系统的转账业务。如张三转给李四100元,张三扣减100,李四增加100。这个操作过程需要确保张三扣减100和李四增加100的操作同时执行。不能出现张三扣了100,而李四没有加收100的情况。转账的操作就是事务的原子性操作。

(2)一致性 (Consistency)

数据库中的数据在事务操作前和事务处理后必须满足业务规则约束

比如,转账操作。一致性确保事务操作前后的状态一致。张三扣减100和李四增加100最终的总金额是一致的。

(3)隔离性 (Isolation)

允许多个并发事务同时对数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

如:在数据库里不只有一个数据库在连接对数据库进行操作。同时可能会有多个操作。这多个操作就是多个并发的事务,并发事务之间不影响彼此独立的对数据进行读写修改,互不影响。

(4)持久性 (Durability)

事务处理结束后 ,对数据的修改是永久的,即便系统发生故障也不会丢失。

事务一旦提交后,这个事务过程中的所有操作就会被持久化。持久化就是成功的写入到数据库的文件系统里面。MySQL 本身就是最终持久化到磁盘里。持久化到磁盘后,不管是遇到 MySQL 重启、盗机或者其他问题,只要磁盘上的数据没有被损坏,MySQL 重新启动后数据依然存在。

 

三、MySQL 对事务的支持

1、MySQL 支持对 MyISAM 和 MEMORY 存储引擎的表进行表级锁定,对 BDB 存储引擎的表进行页级锁定,对 InnoDB 存储引擎的表进行行级锁定。

(1) MyISAM 主要是锁表,一旦开启一个事务,MyISAM 下是对整个表锁定,后续其他的 MySQL 客户端连接想操作这张表的数据,就必需等待解锁后。

(2) InnoDB 主要是行级锁定。在其他客户端只要操作的不是锁定的同一行数据,其他均可正常操作。

2、默认情况下,表锁和行锁都是自动获得的,不需要额外的命令。但是在有些情况下,用户需要明确地进行锁表或者进行事务控制,以确保整个事务的完整性,这样就需要事务控制和锁定语句来完成。

比如,默认 InnoDB 进行行级锁定,只能满足默认行锁定。某些情况希望进行锁表操作,这就需要用户显示的操作。

 

 

 

 

 

 

 

 

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
|
JSON fastjson 数据格式
使用FastJson对json格式字符串、json对象以及javabean直接的相互转换
一、fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
4048 0
|
9月前
|
人工智能 自然语言处理 物联网
阿里万相重磅开源,人工智能平台PAI一键部署教程来啦
阿里云视频生成大模型万相2.1(Wan)重磅开源!Wan2.1 在处理复杂运动、还原真实物理规律、提升影视质感以及优化指令遵循方面具有显著的优势,轻松实现高质量的视频生成。同时,万相还支持业内领先的中英文文字特效生成,满足广告、短视频等领域的创意需求。阿里云人工智能平台 PAI-Model Gallery 现已经支持一键部署阿里万相重磅开源的4个模型,可获得您的专属阿里万相服务。
|
搜索推荐 数据可视化 测试技术
迭代式开发:提升软件项目管理效率的关键路径
迭代式开发将软件项目划分为多个短周期,每个周期结束时交付一个可运行的版本,便于快速获取用户反馈并进行调整。与线性的瀑布模型相比,迭代式开发更具灵活性,能更好地应对需求变化。其核心在于小步快跑、快速反馈和持续改进。通过短周期迭代,团队能及时发现并解决问题,提高协作透明度,并根据用户意见不断优化产品。实施时需设定固定迭代周期、建立跨职能团队、采用持续集成与自动化测试,并重视每次迭代后的回顾与优化。尽管面临需求频繁变更、时间管理和团队协作等挑战,但借助现代办公协同工具,迭代式开发能显著提升项目管理效率,确保产品更贴近用户需求。
369 0
|
机器学习/深度学习 存储 人工智能
政务部门人工智能OCR智能化升级:3大技术架构与4项核心功能解析
本项目针对政务服务数字化需求,建设智能文档处理平台,利用OCR、信息抽取和深度学习技术,实现文件自动解析、分类、比对与审核,提升效率与准确性。平台强调本地部署,确保数据安全,解决低质量扫描件、复杂表格等痛点,降低人工成本与错误率,助力智慧政务发展。
429 0
|
JavaScript
cnpm 的安装与使用
本文介绍了npm和cnpm的概念、安装nodejs的步骤,以及cnpm的安装和使用方法,提供了通过配置npm使用中国镜像源来加速包下载的替代方案,并说明了如何恢复npm默认仓库地址。
cnpm 的安装与使用
|
网络协议 算法 程序员
网络必修课:以太网报文格式详解
嗨,大家好!今天,我要带大家深入了解以太网报文格式,这是现代网络通信的重要基础。无论你是网络工程师、开发者,还是对技术感兴趣的朋友,这篇文章都将为你揭开以太网的神秘面纱,让你更好地理解和应用这一关键技术。准备好了吗?让我们开始吧!
644 4
|
算法 安全 数据安全/隐私保护
实战案例2:简单的文件加密解密程序。
实战案例2:简单的文件加密解密程序。
|
算法 UED
探索编程思维:不仅是代码,更是解决问题的艺术
【5月更文挑战第24天】 在数字世界的舞台上,编程不单是一系列指令的排列组合,它更是一种独特的思维方式。本文将深入探讨编程思维的本质及其在问题解决过程中的应用。我们将剖析编程思维如何影响逻辑构建、创新思考和系统分析,并通过实例说明如何将编程原则应用于日常生活和非技术领域。