zoukankan      html  css  js  c++  java
  • 事务基础

    事务(transaction)

    事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)。一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成。

    事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同。例如银行转账交易,input和output的两条dml语句必须同时完成或失败。

    特性:ACID(酸)

    原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行

    一致性(Consistency):一个事务执行命令使数据从一个一致状态切换成另外一个一致状态

    隔离性(Isolation):一个事务的执行不受其他事务的干扰

    持久性(Durability):一个事务一旦提交,则会永久的改变数据库的数据

     数据库的并发问题:

    脏读:对于两个事务T1、T2,T1读取了意境被T2更新但还没有提交的字段。之后,若T2回滚,则T1读取的内容是临时且无效的。(类似区块链中的分叉攻击,未提交指没有确认六个区块)

    不可重复读:对于两个事务T1、T2,T1读取了一个字段,然后T2更新了该字段(已提交)。T1再次读会得到不同值。

    幻读:对于两个事务T1、T2,T1从表中读取字段,然后T2在表中插入新行。T1再次读取会多出几行。

     隔离级别:

    (解决)--> 脏读 不可重复读 幻读
    read uncommitted × × ×
    read committed × ×
    repeatable read ×
     

    查看mysql8默认隔离级别:

     select @@transaction_isolation;
    +-------------------------+
    | @@transaction_isolation |
    +-------------------------+
    | REPEATABLE-READ         |
    +-------------------------+
    1 row in set (0.00 sec)

    更改隔离级别:

    set autocommit=false;
    set global transaction isolation level read committed;

     global更改所有连接的隔离级别,单个连接则改为session。一个cmd窗口为一个连接:Your MySQL connection id is 8

  • 相关阅读:
    bzoj4476: [Jsoi2015]送礼物
    牛客练习赛42 E.热爆了
    bzoj3561: DZY Loves Math VI
    bzoj3560: DZY Loves Math V
    bzoj3512: DZY Loves Math IV
    bzoj3481: DZY Loves Math III
    使用WebUploader本地生成缩略图
    centos 7 安装JDK1.8
    APK反编译
    centos 7 配置pytorch运行环境
  • 原文地址:https://www.cnblogs.com/faded828x/p/13195888.html
Copyright © 2011-2022 走看看