事务

作者: bit_拳倾天下 | 来源:发表于2021-06-20 15:25 被阅读0次

什么是事务?

就是一组 sql 语句, 它是不可分割的整体。

一. 事务的 ACID 四大特性

  1. 原子性(atomitil)
    不可分割,要么一起成功,要么一起失败
  2. 一致性
    数据保持一致状态,从一个一致性状态到另一个一致状态,保证数据准确可靠
  3. 隔离性
    事务之间互不干扰(互补干扰的程度由隔离级别决定)
  4. 持久性
    数据一旦提交,不可撤回

二. 事务分类

  1. 隐式事务
    没有直接显式声明事务,如:curd 的每个语句,都是一个隐式事务

  2. 显式事务
    明确的用命令开启和关闭事务,手动开启事务过程:

set autocommit = 0;# 关闭自动提交
start transaction;# 开启事务,可以省略
...
savepoint  a;
...
# sql 中 commit 和 rollback 只能二选一,可放在代码中判断,决定回滚还是提交
commit;
rollback;
rollback to a; # 和 savepoint 配合,可回滚到指定位置

truncate是不支持回滚的

三. 事务隔离级别

  1. 多个事务并发处理相同数据的问题
    a. 脏读
    一个事务读取了另一个事务未提交的数据
    b. 不可重复读
    多次读取数据不一致,例如A事务读取到数据,期间数据被B事务修改,A事务再次读取时该数据已经被修改,导致两次读取不一致
    c. 幻读
    A事务读取了数据,期间B事务插入/删除了部分数据,A事务再次读取时,会发现多出或少了数据
  1. 事务隔离级别
    a. read uncommited
    上述三种问题都会有
    b. read commited
    可避免脏读
    c. repeatable read
    可避免不可重复读的问题,在 a 事务读取了 t1 表的数据,且 a 事务尚未结束,此时 b 事务提交了修改内容,a 事务再次读取到的数据仍然是修改前的,保证可以重复读数据。
    d. Serializable
    序列化,串行化上述问题都可避免

mysql 支持上述四种隔离级别,默认隔离级别是 c,oracle 只支持其中的 b、c 两种,默认隔离级别是 b

  1. 查询和修改隔离级别 (mysql 8)
    a. 查询隔离级别:
select @@transaction_isolation;
或
show variables like 'transaction_isolation';

b. 修改隔离级别:
SET GLOBAL | SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
session 只修改本次会话,global 修改全局

相关文章

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

  • 数据库事务书目录

    数据库事务 事务概念 本地事务 全局事务 全局事务的定义 J2EE中全局事务的实现 全局事务的优缺点 基于消息的分...

  • MySQL事务

    MySQL-innodb-事务 事务的特性 事务的生命周期 失败的事务: 事务的控制语句 面试题 事务日志-red...

  • mysql事务隔离机制及其隔离级别、实现原理分析

    目录 事务特性ACID属性 并发事务带来的问题 事务隔离级别 事务实现原理 事务特性ACID属性 事务特性指的就是...

  • MULE事务配置

    在mule的事务可能为jdbc事务,jms事务,xa事务等,多种事务.这里讲解事务的几个动作: 相关的文档:htt...

  • 事务—事务模型

    程序猿基础知识的学习、理解、整理——事务(方方土) 事务,看似很简单,其实很复杂,作为一个程序猿,你对事务到底了解...

  • 事务—XA事务

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是XA事务?在什么场景下会出现XA事务? @Transac...

  • 事务—事务模式

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的...

  • JDK动态代理给Spring事务埋下的坑

    service 模拟动态代理事务 测试类 预测结果模拟事务:开启事务execute doLink模拟事务:关闭事务...

网友评论

      本文标题:事务

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