• 数据库事务


    事务简介

    事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
    就比如: 张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加
    1000。 这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。

      默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐式的提交事务。
    
    • 1

    事务操作

    1.查看

     SELECT @@autocommit ;
    
    • 1

    2.设置事务

    	SET	@@autocommit = 0 ;
    
    • 1

    3.提交事务

    	COMMIT;
    
    • 1

    4.回滚事务

       ROLLBACK;
    
    • 1
    注意:上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们执行的DML语句都不会提交, 需要手动的执行commit进行提交。
    
    • 1

    控制事务二

    1. 开启事务
    START TRANSACTION	或 BEGIN ;
    
    • 1

    2.提交事务

    COMMIT;
    
    • 1
    1. 回滚事务
    ROLLBACK;
    
    • 1

    事务四大特性

    1. 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
    2. 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
    3. 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立 环境下运行。
    4. 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。 上述就是事务的四大特性,简称ACID。

    并发事务问题

    1. 赃读:一个事务读到另外一个事务还没有提交的数据。
    2. 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
    3. 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据 已经存在,好像出现了 “幻影”。

    事务隔离级别

    隔离级别脏读不可重复读幻读
    Read uncommitted
    Read committed×
    Repeatable Read(默认)××
    Serializable×××
    1. 查看事务隔离级别
    SELECT @@TRANSACTION_ISOLATION;
    
    • 1
    1. 设置事务隔离级别
       SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED |
    
    READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
    
    • 1
    • 2
    • 3
    注意:事务隔离级别越高,数据越安全,但是性能越低。
    
    • 1
  • 相关阅读:
    1366 - Incorrect string value: ‘\xE5\xB9\xBF\xE5\x85\xB0...‘ for column编码错误
    windows11,OpenOCD 调试FPGA用作jtag
    Windows OpenGL 图像伽马线
    从0到1配置TensorRT环境
    奶气萌娃的声音怎么做?一个简单的小方法,奶娃配音轻松拿捏
    vue3环境搭建
    使用Locust进行分布式性能测试
    Leetcode.2172 数组的最大与和
    Ubuntu的EFI分区无法删除
    算法简单笔记2
  • 原文地址:https://blog.csdn.net/qq_17358621/article/details/126949629