首页 > 数据库 >MySQL学习笔记-事务

MySQL学习笔记-事务

时间:2023-03-12 22:35:12浏览次数:40  
标签:事务 隔离 笔记 提交 MySQL 操作 级别

事务

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

感觉有点像是函数

  • 默认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事务在同时操作同一个数据库或同一张表时所引发的问题。

image-20230312212411821

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

四. 事务隔离级别

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

image-20230312215143421

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

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

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

# 查看事务隔离级别
select @@transaction_isolation;

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

标签:事务,隔离,笔记,提交,MySQL,操作,级别
From: https://www.cnblogs.com/yellowsea/p/17209411.html

相关文章

  • 数据结构学习笔记-day3
    Day3一、线性表的定义和特点由n(n>=0)个数据特性相同的元素构成的有限序列称为线性表。N为线性表的长度,当n=0时,称其为空表。  二、线性表的顺序表示和实现    ......
  • 【项目实战】基于Python、Django以及MySQL的网上书城管理系统项目实战教程(附完整源码)
    1、项目说明基于python+Django+Mysql的网上书城系统项目实战项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)首先需要创建数据库......
  • 数论学习笔记
    一、一些基本定义加性函数:\[\forallf\inAdd:\gcd(x,y)=1\impliesf(xy)=f(x)+f(y)\]完全加性函数:\[\forallf\inAdd^*:f(xy)=f(x)+f(y)\]积性函数:\[\forallf\in......
  • mysql-8.0.x搭建主从
    概述master/slave用作备库的形式数据库的可用性开干envcentos7.x2c4gx2mysql8.0.28x01、mysql安装mysql-8.0.x搭建x02、修改my.cnfmaster[mysql]auto-r......
  • 【项目实战】基于Python+Tkinter+MySQL的GUI简易酒店管理系统(附完整源码)
    1、项目说明基于python+Tkinter+MySQL的简易酒店管理系统项目实战项目需要安装pycharm社区版或专业版都可,MySQL以及项目所需的所有模块项目需要安装tkinter、pymysql......
  • mysql
    mysql数据库相关概念数据:数据库:存储数据的仓库,数据是有组织的进行存储数据库管理系统:操纵和管理数据库的大型软件SQL:结构化查询语言(structuredquerylanguage),是一套......
  • 力扣180(MySQL)-连续出现的数字(中等)
    题目:编写一个SQL查询,查找所有至少连续出现三次的数字。返回的结果表中的数据可以按 任意顺序 排列。查询结果格式如下面的例子所示: 解题思路:原表数据: 方法......
  • mysql数据库系统
    数据库的概念:数据库就是一个运行在系统上的软件,用于存储用户个人信息、用户的游戏资料等数据库是多个表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据数据库......
  • 代码大全 阅读笔记01
    阅读了代码大全,以下是我的收获:松散耦合性:耦合性就是两个子程序之间的紧密程度。要注意耦合的规模:注意两个子程序之间的联系程度。注意两个子程序之间的联系的直接程度,越......
  • 【项目实战】基于Python+Django+MySQL的新闻发布系统(附完整源码)
    1、项目说明基于python+Django+Mysql的新闻发布系统项目实战项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)首先需要创建数据库数......