• 事务


    什么是事务

    在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。由多条SQL语句组成一个功能(事务).需要将多次访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败,就进行事务的回滚,所有的SQL语句全部执行失败。

    事务的四大特性(ACID)

    事务特性含义
    原子性(Atomicity) 事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
    一致性(Consistency) 事务前后数据的完整性必须保持一致
    隔离性(Isolation) 是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离,不能相互影响。
    持久性(Durability) 指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

    事务的原理

      当连接到数据库后,数据库会为这个连接创建一个临时的事务日志文件,如果是普通SQL操作,是直接操作数据库的.如果开启事务后续的SQL操作保存到日志文件.当commit临时事务日志文件的SQL就会真正作用到数据库上,当rollback回滚事务清空日志文件。

    事务的隔离级别

      事务在操作时的理想状态:多个事务之间互不影响,如果隔离级别设置不当就可能引发并发访问问题。

    并发访问的问题含义
    脏读 一个事务读取到了另一个事务中尚未提交的数据
    不可重复读 一个事务中两次读取的数据内容不一致
    幻读 一个事务内读取到了别的事务插入的数据,导致前后读取记录行数不同

     

      MySQL数据库有四种隔离级别:上面的级别最低,下面的级别最高。“是”表示会出现这种问题,“否”表示不会出现这种问题。

    级别名字隔离级别脏读不可重复读幻读数据库默认隔离级别
    1 读未提交 read uncommitted  
    2 读已提交 read committed Oracle和SQL Server
    3 可重复读 repeatable read MySQL
    4 串行化 serializable  
  • 相关阅读:
    PHP PSR 标准规范
    PHP线程安全与非线程安全的区别(NTS/TS)选择?
    goto 语法在 PHP 中的使用
    linux命令post请求发送json串
    接口日志表sql【我】
    sentinel最简单接入【我】
    Jps命令—使用详解
    MyBatis-Plus Wrapper条件构造器查询大全
    IDEA项目启动不起来也不打印日志【我】
    linux下查看nginx配置文件地址
  • 原文地址:https://www.cnblogs.com/mengjialian/p/12523539.html
Copyright © 2020-2023  润新知