zoukankan      html  css  js  c++  java
  • mysql基础 事务的认识和使用

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。

    在关系数据库中,一个事务可以是一条SQL语句一组SQL语句整个程序

     
    事务应该具有4个属性:原子性一致性隔离性持久性。这四个属性通常称为ACID特性
     
    原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
    一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
    隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
     

    如果不考虑事务的隔离级别,会出现以下“不正确”的情况:

    1. 脏读:指一个事务读到了另一个事务中未提交的数据。
    2. 不可重复读:针对一条记录的,同一条记录前后不一样
    3. 虚读(幻读):针对一张表,前后读到的记录条数不一样。

    隔离级别的分类:
    READ UNCOMMITTED脏读、不可重复读、虚读都有可能发生
    READ COMMITTED:能避免脏读。不可重复读、虚读都有可能发生
    REPEATABLE READ:能避免脏读、不可重复度。虚读有可能发生。
    SERIALIZABLE:能避免脏读、不可重复度、虚读。

    mysql中控制事务隔离级别的语句:
    select @@tx_isolation;    //查看当前的事务隔离级别
    set transaction isolation level  你的级别(上述四种之一);  //设置隔离级别

    mysql中默认级别为 REPEATABLE READ

    mysql事务控制语句:

    默认情况下一条语句为一个事务,无需手动开启。事务控制语句如下

    start transaction:开启一次事务
    rollback:回滚
    commit:提交事务

  • 相关阅读:
    网页支付宝接口使用
    @Valid注解的使用springmvc pojo校验
    Git
    面试宝典
    Navicat 破解版(操作非常简单)
    JAVA中List,Map,Set接口的区别
    java 枚举示例
    springcloud和springboot是什么关系?
    java面试经常涉及到的
    asp.net 报错 SAP 报错 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
  • 原文地址:https://www.cnblogs.com/z941030/p/4553042.html
Copyright © 2011-2022 走看看