美文网首页
MySQL的事务的相关知识

MySQL的事务的相关知识

作者: 程序员丶星霖 | 来源:发表于2022-12-04 20:47 被阅读0次

一、事务的概述

1.1 概念

保证事务中的所有操作都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。

当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

1.2 事务的原理

事务开启之后,所有的操作都会临时保存到事务日志,事务日志只有在得到commit命令才会同步到数据库表中,其他任何情况都会清空事务日志(rollback,断开连接)。

1.3 事务的使用场景

如果在某个业务中需要执行多条SQL语句,这种情况一般是需要使用到事务,从而保证多条SQL语句执行同时成功或同时失败。

例如:转账、批量删除、从购物车中提交订单等等操作。

1.4 事务的四大特性(ACID)

1. 原子性

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

2. 一致性

事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

3. 隔离性

事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

4. 持久性

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

二、MySQL进行事务管理操作

2.1 自动事务(MySQL默认)

MySQL默认是自动提交事务的,一条SQL语句就是一个事务。

2.2 开启事务

2.2.1 方式一:手动开启事务

START TRANSACTION

手动开启事务之后,执行的SQL语句都不会真正改变数据库中的数据,需要用户手动提交事务才能够真正执行SQL语句。

2.2.2 方式二:设置MySQL中的自动提交参数

  • 1、查看MySQL中事务是否自动提交
show variables like '%commit%'
  • 2、设置自动提交的参数为OFF
set autocommit = 0

2.2.3 提交和回滚事务

1、提交事务

当事务中的SQL语句执行完毕之后,没有出现任何问题,我们需要在最后提交事务,让这些SQL语句真正执行去改变数据库中的数据。

commit

2、回滚事务

当执行这个事务中的SQL语句的过程中,一旦出现问题或者异常,则需要回滚事务,从而回到SQL语句执行之前的状态。

rollback

三、事务的隔离级别

3.1 不考虑事务的隔离性会引发的问题

事务在操作时的理想状态如下:
所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个数据。可能引发并发访问的问题。

并发访问的问题 含义
脏读 一个事务读取到了另一个事务中尚未提交的数据
不可重复读 一个事务中两次读取的数据内容不一致,要求的是一个事务中多次读取时数据是一致的,这是事务update时引发的问题
幻读 一个事务中两次读取的数据的数量不一致,要求在一个事务多次读取的数据的数量是一致的,这是insert或delete时引发的问题

3.2 事务隔离级别

级别 名字 隔离级别 脏读 不可重复读 幻读 数据库默认隔离级别
1 读未提交 read uncommitted
2 读已提交 read committed Oracle
3 可重复度 repeatable read MySQL
4 串行化 serializable 最高的隔离级别

隔离级别越高,性能(效率)越差,安全性越高。

3.2.1 设置隔离级别

  • 设置事务隔离级别
set session transaction isolation level 隔离级别;
  • 查询当前事务隔离级别
select @@tx_isolation

学海无涯苦作舟

相关文章

  • MySQL的事务的相关知识

    一、事务的概述 1.1 概念 保证事务中的所有操作都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式...

  • mysql锁和事务相关知识点

    梳理了mysql锁和事务相关知识点,如下图所示

  • MySQL-事务相关知识

    事务ACID的理解 引入事务的主要目的: 保证数据库从一个一致性状态切换为另一种一致性状态 所有修改要么都保存,要...

  • 聊聊数据库事务

    本文主要基于Mysql数据库的InnoDB存储引擎介绍事务相关知识。 1.先来说说数据库引入事务的目的。 事务...

  • [Mysql]-锁

    MySQL的事务支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: MyISAM:不支...

  • MySQL重要知识点(总结)

    最近一段时间都学习mysql,将重要的知识点总结如下: 一、字段、表、索引设计规范相关 二、事务相关 三、锁相关 ...

  • Mysql数据库

    MySQL知识图谱 MySQL索引 MySQL架构 MySQL锁 MySQL事务 MySQL集群 MySQL分库分...

  • 事务相关知识

    1什么是事务: 简单说就是把多条数据库操作捆绑到一起执行,要么都成功,要么都失败。 2事务的原则ACID: 原子性...

  • MySQL学习日记(四)-事务

    来源:转载 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用...

  • mysql 事物

    来源:转载 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用...

网友评论

      本文标题:MySQL的事务的相关知识

      本文链接:https://www.haomeiwen.com/subject/fplmfdtx.html