事务

作者: 山不转人自转 | 来源:发表于2020-12-14 19:33 被阅读0次

    事务四大特性:

    ①.原子性:事务所有操作不可再分割,也就是“事务中所有操作要么全部执行成功,要么全部执行失败"。
    ②.一致性:事务执行后,数据库状态与其他业务规则保持一致,如转账业务,无论事务执行成功与否,参与转账打两个账户余额之和应该是不变的。
    ③.隔离性:是指并发操作中,不同事务应该隔离开来,使每个并发中的是事务不会相互干扰。
    ④.持久性:一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须保证通过某种机制恢复数据。

    有account表:


    image.png

    update account set balance=balance+1100 where name='lucky';
    update account set balance=balance-1100 where name='theme';

    开始事务:start transaction;

    结束事务:commit;

    回滚事务:rollback;

    *注意:所有的事务都是使用同一个connection对象!

    并发事务的问题:

    ①,脏读:读取到另一个事务的未提交数据,称之为脏读(绝对不允许出现);
    ②,不可重复读:读取到两次数据不一致,因为另一个事务对该记录进行了修改;
    ③,幻读(虚读 ):对同一张表两次查询不一致,因为另一个事务插了一条数据。

    事务的隔离级别:
    SERIALIZABLE(串行化):没有并发问题,性能最差;

    REPEATABLE READ(可重复读):处理脏读和不可重复读问题,没处理幻读,性能比SERIALIZABLE好一些;

    READ COMMITTED(读已提交数据):处理脏读,不会处理不可重复读和幻读,性能比REPEATABLE READ好;

    READ UNCOMMITTED(读未提交数据):啥也不处理,性能最好;

    相关文章

      网友评论

          本文标题:事务

          本文链接:https://www.haomeiwen.com/subject/nxxjfctx.html