深入解析MySQL事务管理:ACID特性与基本操作

server/2024/10/10 18:47:12/

在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~

  • 专栏导航

    • Python系列: Python面试题合集,剑指大厂
    • Git系列: Git操作技巧
    • GO系列: 记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列: 详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列: 总结好用的命令,高效开发
    • 算法与数据结构系列: 总结数据结构和算法,不同类型针对性训练,提升编程思维

    非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

    💖The Start💖点点关注,收藏不迷路💖

    📒文章目录

          • 事务的ACID特性:
          • MySQL事务的基本操作:
          • 事务的使用示例:
          • 设置事务隔离级别:


数据库管理系统中,事务(Transaction)是一个逻辑操作单元,由一系列步骤组成,这些步骤要么全部成功,要么全部失败。事务的主要目的是确保数据的完整性和一致性。MySQL支持事务操作,尤其是在使用InnoDB存储引擎时,事务功能非常强大。

事务的ACID特性:
  1. 原子性(Atomicity)
    • 一个事务中的所有操作要么全部完成,要么全部不完成。
  2. 一致性(Consistency)
    • 事务的执行使数据库从一个一致状态变到另一个一致状态。
  3. 隔离性(Isolation)
    • 一个事务的操作对其他事务是隔离的,并发执行时不会互相干扰。
  4. 持久性(Durability)
    • 事务一旦提交,它对数据库的改变是永久的,即使系统崩溃也不会丢失。
MySQL事务的基本操作:

在MySQL中,事务操作一般通过以下几个SQL语句来管理:

  1. 开始事务:START TRANSACTIONBEGIN
  2. 提交事务:COMMIT
  3. 回滚事务:ROLLBACK
事务的使用示例:

假设我们有两个账户表 accounts,表结构如下:

CREATE TABLE accounts (account_id INT PRIMARY KEY,balance DECIMAL(10, 2) NOT NULL
);

我们希望从一个账户转账到另一个账户,这需要多个步骤且必须确保原子性。

-- 开始事务
START TRANSACTION;-- 从账户1扣款
UPDATE accounts SET balance = balance - 100.00 WHERE account_id = 1;-- 向账户2存款
UPDATE accounts SET balance = balance + 100.00 WHERE account_id = 2;-- 提交事务
COMMIT;

如果在事务过程中发生错误,可以使用 ROLLBACK 来撤销所有操作:

-- 开始事务
START TRANSACTION;-- 从账户1扣款
UPDATE accounts SET balance = balance - 100.00 WHERE account_id = 1;-- 检查是否发生错误,例如余额不足
IF balance < 0 THEN-- 回滚事务ROLLBACK;
ELSE-- 向账户2存款UPDATE accounts SET balance = balance + 100.00 WHERE account_id = 2;-- 提交事务COMMIT;
ENDIF;
设置事务隔离级别:

MySQL支持四种事务隔离级别:

  1. READ UNCOMMITTED:最低隔离级别,允许读取未提交的数据(脏读)。
  2. READ COMMITTED:只能读取已提交的数据,防止脏读。
  3. REPEATABLE READ:确保在同一个事务中多次读取相同的数据结果一致,防止不可重复读(MySQL默认)。
  4. SERIALIZABLE:最高隔离级别,完全锁定,防止幻读。

设置事务隔离级别可以使用以下命令:

-- 设置全局隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;-- 设置当前会话隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

通过对MySQL事务的深入理解和适当使用,可以有效地保证数据的完整性和一致性,增强数据库操作的可靠性。


🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

http://www.ppmy.cn/server/129738.html

相关文章

JAVA思维提升

利用java做一个双色球彩票系统 要求 package ZY; import java.util.Random; import java.util.Scanner; public class Test9双色球 { //目标&#xff1a;模拟双色球//规则投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择;蓝色球号码从1-16中选择。publi…

【React】事件机制

事件机制 react 基于浏览器的事件机制自身实现了一套事件机制&#xff0c;称为合成事件。比如&#xff1a;onclick -> onClick 获取原生事件&#xff1a;e.nativeEvent onClick 并不会将事件代理函数绑定到真实的 DOM节点上&#xff0c;而是将所有的事件绑定到结构的最外层…

【瑞昱RTL8763E】音频

1 音乐播放控制 1.1 播放列表更新 文件系统在sd卡中保存header.bin及name.bin两份文件用于歌曲名称的存储。为方便应用层进行歌曲显示及列表管理&#xff0c;可将这两个bin文件信息读取并保存到nor flash中。需要播放指定名称的歌曲时&#xff0c;将对于歌曲名称传递给文件系…

Go版数据结构 -【8.4 快速排序】

8.4 快速排序 快速排序是一种分而治之的排序算法。它通过随机选择一个基准元素&#xff0c;将数组分为两部分。 一部分比基准元素小&#xff0c;另一部分比基准元素大&#xff0c;之后对两部分排序。 快速排序以其平均情况下的 O(n log n) 时间复杂度和良好的性能而广泛应用…

小程序 uniapp+Android+hbuilderx体育场地预约管理系统的设计与实现

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户 注册…

linux 端口 进程

文章目录 1. 检查端口是否被监听1. 使用 netstat 命令2. 使用 ss 命令3. 使用 lsof 命令4. 使用 curl 命令5. 使用 telnet 命令6. 查看Python程序输出示例输出总结 2.查看端口被哪个进程占用1. 使用 lsof 命令2. 使用 netstat 命令3. 使用 ss 命令示例输出总结 3.查看进程在哪个…

自动驾驶系统研发系列—如何选择适合自动驾驶的激光雷达?从基础到高端全解读

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

[Python] 《人生重开模拟器》游戏实现

文章目录 优化点一&#xff1a;多元化的天赋系统示例天赋&#xff1a;天赋选择代码&#xff1a; 优化点二&#xff1a;更加多样化的随机事件年龄阶段划分&#xff1a;随机事件代码&#xff1a; 优化点三&#xff1a;设定人生目标人生目标示例&#xff1a;人生目标代码&#xff…