【MySQL】事务

news/2024/12/4 19:59:36/

系统地复习一遍MySQL的几个必会点。

文章目录

  • 简介
  • 演示
    • 1、指定事务提交方式
    • 2、通过指令操作事务
  • 事务四大特性
  • 并发事务问题
  • 事务隔离级别

简介

事务 是一组操作(即sql语句)的集合,是一个不可分割的工作单位,事务当中的所有操作会被作为一个整体向系统提交或撤销,这些操作要么同时成功,要么同时失败

演示

以最经典的转帐为例,需要保证转账一方和被转一方的账户余额分别同时减少和增加一个相同值,这就需要通过事务进行处理。

现有如下两个账户,账户余额分别为200,存放在account表格中。

idnamemoney
1张三200
2李四200

默认情况下,执行一条DML语句,MySQL会隐式地提交事务。 所以就需要我们手动地开启事务和提交事务。假设张三向李四转账100,转账命令如下。

UPDATE account SET money  = money - 100 WHERE name = '张三'UPDATE account SET money  = money + 100 WHERE name = '李四'

在使用IDE的情况下,可以选中这两行执行即可模拟事务,若在MySQL命令行运行,则需要设置事务提交方式或者通过指令手动提交

1、指定事务提交方式

-- 查看是否自动提交,是,则返回 1,否则 0
SELECT @@autocommit;  -- 设置为手动提交,只针对当前会话
SET @@autocommit = 0;  -- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;

2、通过指令操作事务

-- 开启事务
START TRANSACTIONBEGIN;-- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;

事务四大特性

简称为ACID,分别为:

  • 原子性(Atomicity):事务是不可分割的最小操作单元,内部操作要么全部成功,要么全部失败;
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态;
  • 隔离性(Isolation):保证事务在不受外部并发操作影响的独立环境下运行;
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据改变是永久的。

并发事务问题

  • 脏读:一个事务读到另一个事务还没有提交的数据;
  • 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读;
  • 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在。

事务隔离级别

隔离级别脏读不可重复读幻读
READ UNCOMMITTEDYYY
READ COMMITTEDNYY
REPEATABLE READ(默认)NNY
SERIALIZABLENNN
-- 查看事务隔离级别
SELECT @@TRANSACTION_IOSLATION;-- 设置事务隔离级别
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {要设置的隔离级别};

http://www.ppmy.cn/news/64428.html

相关文章

Qt5.9学习笔记-事件(五) 事件调试和排查

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

常用的网页设计工具,有哪些比较推荐

网页设计并不容易,易于使用的网页设计工具更难找到。随着网络的快速发展,网站迅速崛起,网页设计也很流行。本文收集了7款易于使用的网页设计工具,每一种近年来都受到网页设计师的广泛欢迎,以确保实用和易于使用。我希望…

程序员面试金典10.*

文章目录 10.1合并排序的数组10.02变位词组10.03搜索旋转数组10.05稀疏数组搜索10.09排序矩阵查找10.10 数字流的秩10.11 峰与谷 10.1合并排序的数组 这个就从后往前加入到新数组里就行。如果B的下标是-1则结束,A的下标是-1则一直加B的元素。 class Solution { pub…

【C语言】都玩过三子棋游戏把,但你知道怎么用C语言实现三子棋游戏吗?让我来手把手教你。

三子棋游戏 1.前言2.功能分析2.1主函数设计及菜单设计2.2打印棋盘与棋盘初始化2.3玩家下棋2.4电脑下棋2.5判断输赢2.5.1代码优化 3.game.h头文件展示4.text.c源文件文件展示5.game.c源文件文件展示 所属专栏:C语言 博主首页:初阳785 代码托管&#xff1a…

OBCP考点总结二

11.转储相关参数 minor_freeze_times n 控制两次合并之间的转储次数,达到此次数则自动触发合并(Major Freeze) n 设置为 0表示关闭转储,即每次租户MemStore使用率达到冻结阈值(freeze_trigger_percentage)都直接触发集群合并 minor_merge_concurrency…

Oracle配置方案-RAC

基本的Oracle RAC配置方案的具体步骤: 硬件准备: 确保服务器满足Oracle RAC的硬件要求,包括适当的CPU、内存和存储配置。配置共享存储:使用共享存储(如SAN或NAS)来存储数据库文件,确保所有节点都…

图片处理软件:分享6款非常实用的图片处理工具

目录 一、移动端 1、snapseed 2、一键抠图 3、pixlr 二、电脑端 1、图片编辑助手 2.GIMP 3、photopea 今天给大家分享6款非常实用的图片处理工具,其中包含移动端和电脑端,每一款都非常实用,希望对大家能有所帮助! 一、移…

linux系统挂载硬盘

linux系统挂载硬盘 1、背景2、环境3、准备工作4、挂载分区4.1、查看分区信息4.2、创建分区4.3、设置分区格式4.4、创建挂载目录4.5、挂载分区4.6、设置开机自动挂载4.7、验证是否挂载成功 1、背景 日常使用过程中随着系统业务量的新增对磁盘的空间和性能提出了更高的要求&…