• 事务基础


    事务(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

  • 相关阅读:
    python多版本切换
    python之禅
    Python int与string之间的转化
    pycharm工具使用
    python学习路线图
    traceback.print_exc()的用法
    他人学习Python感悟
    【西北师大-19软工】第十三、十四次作业汇总暨期末总结
    【西北师大-19软工】第十二次作业成绩汇总
    第十七周助教工作总结——NWNU李泓毅
  • 原文地址:https://www.cnblogs.com/faded828x/p/13195888.html
Copyright © 2020-2023  润新知