事务

事务:是一组操作的集合,是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败(当操作中某一步出现异常时,前面已执行的步骤也会失效)。

感觉有点像是函数

  • 默认MySQL的事务是自动提交的,当执行一条DML语句,MySQL会立即隐式地提交事务。

一. 事务操作

方式1: 修改事务提交方式

1. 查看/设置事务提交方式

# 查看事务提交方式(1为自动 0为手动)
select @@autocommit; # 设置事务提交方式
set @@autocommit = 0;

2. 提交事务

commit;

3. 回滚事务

rollback;

方式2: 使用指令控制事务

1. 开启事务

start transaction;
# or
begin;

2. 提交事务

commit;

3. 回滚事务

rollback;

二. 事务四大特性

1. 原子性(Atomicity)

事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

2. 一致性(Consistency)

事务完成时,必须使所有的数据都保持一致状态。

3. 隔离性(Isolation)

数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

4. 持久性(Durability)

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

三. 并发事务问题

并发事务问题:指的是A事务和B事务在同时操作同一个数据库或同一张表时所引发的问题。

  • 不可重复读:当一个事务中先后有两个查询同一个数据的操作时,如果在第一个操作后第二个操作前有一个并发的事务修改了那个数据并提交了,则会出现前后两个查询结果不一样的情况,由于一个事务是一起成功或一起失败,则数据的变更就算是出错了。

四. 事务隔离级别

事务隔离级别: 用于解决并发事务问题。

  • 上图中的意思是可能发生。

  • 上图中从上往下效率递减。(事务隔离级别越高,数据越安全,但是性能越低)

  • 查看与设置事务隔离级别:

# 查看事务隔离级别
select @@transaction_isolation; # 设置事务隔离级别
set [session|global] transaction isolation level {隔离级别};
# session 会话级别 仅对当前客户端窗口有效
# global 针对于所有客户端的会话窗口有效

MySQL学习笔记-事务的更多相关文章

  1. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  2. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  3. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

  4. MySQL学习笔记-数据库内存

    数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...

  5. MySQL学习笔记-数据库后台线程

    数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...

  6. MySQL学习笔记-cache 与 buffer

    Cache和Buffer是两个不同的概念,简单的说,Cache是加速"读",而 buffer是缓冲"写",前者解决读的问题,保存从磁盘上读出的数据,后者是解决写 ...

  7. MySQL学习笔记-大纲

    软件程序性能测试在之前<品味性能之道>系列中已经大量提到,讲解了很多测试方法.测试观念.测试思想等等.最近准备深入MySQL进行学习并总结.分别查阅<MySQL性能调优与架构设计&g ...

  8. MySQL学习笔记-MySQL体系结构总览

    MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...

  9. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  10. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

随机推荐

  1. 剑指offer66(Java)-构建乘积数组(中等)

    题目: 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[i ...

  2. 力扣206(java&python)-反转链表(简单)

    题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例2: 输入:head = [1,2] ...

  3. ARMv9刷屏 —— 号称十年最大变革,Realm机密计算技术有什么亮点?

    ​简介: 让我们看下ARMv9机密计算相关的新特性Realm. ​ ARMv9的新闻刷屏了.ARMv9号称十年以来最重大变革,因此让我们看下ARMv9中机密计算相关的新特性Realm.(注:本文是对I ...

  4. [Pholcus] Go项目 Pholcus 源码逻辑分析 species.go

    「代码结构」 结构体:蜘蛛种类列表(即:蜘蛛规则列表) 变量:全局蜘蛛种类实例 方法:向蜘蛛种类清单添加新种类 方法:获取全部蜘蛛种类 方法:通过名字获取蜘蛛 「总体功能」 添加新种类:通过 Spid ...

  5. [FAQ] Win10 WSL Ubuntu 根目录实际位置

    1. 运行(win+R),直接输入 \\wsl$ 进入Ubuntu的目录. 2. 或者文件夹里同样输入  \\wsl$ 进行查找. Refer:Win10 WSL 路径 Link:https://ww ...

  6. [Go] golang 两个数组 list 的合并方式

    s := append([]int{1, 2}, []int{3, 4}...) Tool:在线Golang代码运行 Cool:在线 AI 编程助手 https://stackoverflow.com ...

  7. Raft 共识算法3-日志复制

    Raft 共识算法3-日志复制 Raft算法中译版地址:https://object.redisant.com/doc/raft中译版-2023年4月23日.pdf 英原论文地址:https://ra ...

  8. 【Flink入门修炼】2-3 Flink Checkpoint 原理机制

    如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢? 单机和多机会遇到什么不同的问题? Flink Checkpoint 是做什么用的?原理是什么? 一.什么是 Checkpoint? Chec ...

  9. 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)

    2021"MINIEYE杯"中国大学生算法设计超级联赛(1) 1001 Mod, Or and Everything 题意: 对于每次输入的数字n,求(n%1)|...(n%n)的 ...

  10. PLC输出指令频率F计算

    本文章为学习记录,水平有限,望各路大佬们轻喷!!!    转载请注明出处!!!