事务

作者: 柴不驼 | 来源:发表于2017-08-09 22:28 被阅读0次

    1.逻辑上的一组操作,组成它的各个单元要么全成功,要么全失败。

    2.数据库DTL语言:

    start transaction开启事务

    rollback回滚

    commit提交

    在start transaction和rollback或commit之间的语句,是在内存中运行的,并没有存盘,数据库中的数据不生变化。直到commit命令执行之后,操作才会在表上显示出来。一旦某一条语句执行失败,就会执行rollback命令,之前执行没失败的操作也全部作废。

    3.事务的特性:

    原子性:指事是个不可分割的工作单元,事务中的操作要么都成功,要么都失败。

    一致型:事务必须使数据库从一个一致状态变到另一个一致状态。例如:转账前后总金额一致。

    隔离性:多个用户并发访问数据库时,数据库为每一个用户开启的事务不能被其他事务的操作所干扰。多个并发事务之间要相互隔离。

    持久性:事务一旦被提交,对数据库中数据的改变是永久性的,接下来即便数据库发生故障也不会对该操作有任何影响。

    4.事务的隔离级别

    赃读:一个事务读取到了另外一个事务未提交的数据。

    不可重复读:在一个事务哪读取到表中的某一条记录,多次读取结果不同。(update)

    虚读(幻读):在一个事务内读取到了别的事务插入读数据。(insert)

    为了避免以上情况的发生,设置事务的隔离级别。

    *1.READ UNCOMMITTED 三种都有可能发生

    *2.READ COMMITTED  避免赃读  (oracle默认)

    *4.REPEATABLE  READ  虚读有可能发生  (mysql默认)

    *8.SERIALIZABLE  避免三种

    级别越高,性能越低,数据越安全。用哪一种取决于数据库的访问量。实际开发中,用中间的两种。

    5.JDBC对隔离级别的设置:

    在开启事务之前设置。

    相关文章

      网友评论

          本文标题:事务

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