美文网首页
数据库事务

数据库事务

作者: 寂静的春天1988 | 来源:发表于2020-08-27 10:49 被阅读0次

    四大特性

    1、原子性:事务中的操作都是不可分割的,要么全部成功,要么全部失败。
    2、一致性:事务执行后,数据库状态与其他业务规则保持一致,如转账业务,无论事务成功与否,两个账号的余额之和是不变的。
    3、隔离性:在并发操作中,不同事务之间应该隔离开,使每个并发中的事务不会相互干扰。
    4、持久性:一旦事务提交成功,所有数据操作必须持久化到数据库中,提交事务后,数据库马上崩溃,重启时也能通过某种机制恢复。

    假如:开启事务后,既没有提交,也没有回滚。它会自动回滚,当然不要这么做。

    事务的并发读问题

    1、脏读:读取到另一个事务未提交的数据(绝对不允许的)
    2、不可重复读:两次读取不一致,对同一条记录两次读取不一致,因为另一事务对该记录做了修改。
    3、幻读:读到另一事务已提交的数据。对同一张表两次查询不一致,因为另一事务插入了一条记录。

    四大隔离级别

    四大隔离级别就是解决事务并发读问题。
    1、serializeble(串行化)

    • 不会出现任何并发问题,因为它是对同一数据的访问是串行的,非并发访问。
    • 性能最差。
      2、REPEATABLE READ (可重复读)(mysql默认级别)
    • 防止脏读和不可重复读
    • 性能比serializeble好
      3、READ COMMITTED (读已提交数据)(oracle默认级别)
    • 防止脏读
    • 性能比PEPEATABLE READ好
      4、READ UNCOMMITTED (读未提交数据)
    • 可能出现任何的事务并发问题
    • 性能最好

    查看数据库隔离级别

    SELECT @@transaction_isolation;

    设置隔离级别

    set transaction isolationlevel 隔离级别

    更好的博客:
    https://juejin.im/post/6844903670916579336

    相关文章

      网友评论

          本文标题:数据库事务

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