事务

作者: matthewfly | 来源:发表于2019-11-21 09:31 被阅读0次
    1. jdbc事务
      事务必须遵循acid,即原子性、隔离性、一致性、持久性。jdbc的事务都是通过Connecttion接口完成的,涉及到:
    • setAutoCommit 设置是否自动提交,当setAutoCommit(false)时,表示开启事务,需要手动提交;默认为true,执行完一条sql命令后自动提交。
    • commit 提交sql命令,可以是一条或多条。
    • rollback 回滚操作,回滚之前提交的一条或多条操作命令。
    • setSavepoint 在一系列操作中设置一个保存点,后续可以回滚到该保存点。
    • rollback(Savepoint savepoint) 回滚至某个保存点。
    • releaseSavepoint(Savepoint savepoint) 释放某个保存点。
    1. 并发事务级别
      事务控制由严格到宽松有多个级别,相应的事务也会产生各类并发问题:
    • 脏读 事务b中读取到事务a未提交的记录。
    • 不可重复读 事务b中读取同一条记录的结果不同。可能是在事务b过程中事务a对该记录进行了更新。
    • 幻读 事务b中两次读取同一张表的记录条数不同。可能是事务b中事务a对该表进行了插入操作。
    1. jdbc事务级别
    • TRANSACTION_NONE 没有事务
    • TRANSACTION_READ_UNCOMMITTED 读未提交。 可能出现脏读、不可重复读、幻读。事务级别最低,但速度最快。
    • TRANSACTION_READ_COMMITTED 读提交。可以避免脏读数据,但可能出现不可重复读、幻读。
    • TRANSACTION_REPEATABLE_READ 可重复读。避免脏读、不可重复读,但可能出现幻读。
    • TRANSACTION_SERIALIZABLE 串性操作。对整个表加锁,进行串性访问,都避免,但性能最低。

    jdbc事务级别由setTransactionIsolation(int level)方法设置。mysql默认事务级别为TRANSACTION_REPEATABLE_READ。

    相关文章

      网友评论

          本文标题:事务

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