• Mysql(事务)


    概念:事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败

    事务和锁:当执行事务操作时,mysql会在表上加锁,防止其它用户改表的数据

    mysql数据库控制台事务的几个重要操作

    1.start transaction -- 开始一个事务

    2.savepoint 保存点名 -- 设置保存点

    3.rollback to 保存点名 -- 回退事务

    4.rollback --回退全部事务

    5.commit -- 提交事务,所有的操作生效,不能回退

    回退事务:保存点是事务中的点,用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点,当执行回退事务时,通过指定保存点可以回退到指定的点

    提交事务:使用commit语句可以提交事务,当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁、数据生效,当使用commit语句结束事务后,其它会话将可以查看到事务变化后的数据

    -- 开始事务
    start transaction;
    -- 设置保存点
    savepoint a;
    -- 事务中的操作
    insert into index_use values(1,'tom');
    savepoint b;
    insert into index_use values(2,'jack');
    -- 回退事务
    rollback to b;
    -- 提交事务
    commit;

    事务注意事项:

    1.如果不开始事务,默认情况下,dml操作是自动提交的,不能回滚

    2.如果开始一个事务,你没有创建保存点,你可以执行rollback,默认就是回退到事务开始状态

    3.也可以在这个事务中(没有提交)创建多个保存点

    4.可以在事务没有提交前,选择回退到哪个保存点

    5.mysql的事务机制需要innodb的存储引擎

    隔离级别

    1.多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据时的准确性

    2.如果不考虑隔离性,可能会引发如下问题:

    脏读:当一个事务读取另一个事务尚未提交的修改时,产生脏读

    不可重复读:同一查询在同一事务中多次进行,由于其它提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读

    幻读:同一查询在同一事务中多次进行,由于其它提交事务所做的插入操作,每次返回不同的结果集,此时产生幻读

    隔离级别(4种)脏读不可重复读幻读

    读未提交

    Read uncommitted

    不加锁

    读已提交

    Read committed

    ×不加锁

    可重复读

    Repeatable read

    ×××不加锁

    可串行化

    Serializable

    ×××加锁

    查看当前会话隔离级别:select  @@tx_isolation;

    查看系统当前隔离级别:select  @@global.tx_isolation;

    设置当前会话隔离级别:set  session  transaction  isolation  level  repeatable read;

    设置系统当前隔离级别:set  global  transaction  isolation  level  repeatable read;

    mysql默认的事务隔离级别是repeatable read,一般情况下,没有特殊要求则无需更改

    事务的acid特性:

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

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

    3.隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能呗其它事务的操作数据所干扰,多个并发事务之间要相互隔离

    4.持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不能对其有任何影响

  • 相关阅读:
    【Vue】改变 vuex 中的 state ,子组件 watch 监听不到对象值变化。
    shell基础(2):编程基础之变量:全局/局部/shell变量(作用域、定义、操作)、位置参数、数组
    学习Vue3 第一章
    网络编程面试笔试真题
    Can Abnormality be Detected by Graph Neural Networks?
    JMeter录制HTTPS脚本解决办法
    MyBatis源码基础-常用类-别名注册器
    机器学习笔记之概率图模型(九)最大乘积算法(Max-Product Algorithm)
    虚拟偶像的歌声原来是这样生成的!
    C++中的外观模式
  • 原文地址:https://blog.csdn.net/weixin_63954483/article/details/126429846