• JavaWeb入门(四):JDBC之事务


    一、什么是事务

    事务(transaction):是数据库操作的最小工作单位,是作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体向系统提交,要么都执行,要么都不执行。简单的来说事务是一组不可分割的操作集合。

    二、事务的四个特性

    • 原子性(Atomicity):事务包含的所有数据库操作要么全部成功,要么全部失败回滚,强调事务的不可分割

    • 一致性(Consistency):一个事务执行前和执行后都必须处于一致性状态,强调的是事务的执行前后,数据的完整性要保持一致。拿转账来说,假设A用户和B用户两个人的钱加起来是10000,那么不管A和B之间如何转账,转几次账,事务结束后两个人的钱加起来应该还得是10000,这是事务的一致性

    • 隔离性(Isolation):一个事务执行不应受到其它事务干扰(一个事务未提交的业务结果是否对其它事务可见)

    • 持久性(Durability):事务一旦结束(提交/回滚),数据就持久保存到了数据库,一个事务一旦被提交了,那么对数据库的改变就是永久性的,即使在数据库故障的情况下也不会丢失提交的结果

    三、数据库的隔离级别

    数据库的隔离级别有4个,由低到高依次是:Read uncommited、Read commited、Repeatable read、Serializable

     四、数据库的隔离级别和几种读问题

    • 脏读:一个事务读取到另一个事务还没提交的数据,也就是说,一个事务正在对一条数据进行修改,在这个事务完成并提交之前,这条数据是处于待定状态的(可能提交也可能回滚),这时,第二个事务来取这条还没提交的数据,并据此做进一步处理,就会产生未提交的数据依赖关系,这种现象叫做脏读。

    • 重复读:一个事务读到了另外一个事务已经提交的update的数据,导致在当前事务中多次查询结果不一致。一个事务先后两次读取同一条数据,而事务在这两次读取数据之间 该数据被其它事务修改,则两次读取的数据不同,我们称为不可重复读。

    • 幻读(虚读):一个事务读取到另一个事务已经提交的insert的数据,导致在当前事务中多次查询的结果不一致,一般解决幻读的方法是增加范围锁RangeS,锁定检索范围为只读,这样就避免了幻读

    转载请注明出处:https:////www.cnblogs.com/Infancy/p/12510622.html

  • 相关阅读:
    Codeforces 1291 Round #616 (Div. 2) B
    总结
    刷新DNS解析缓存+追踪+域名解析命令
    数学--数论--Hdu 5793 A Boring Question (打表+逆元)
    Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析
    LeetCode 117 Populating Next Right Pointers in Each Node II
    LeetCode 116 Populating Next Right Pointers in Each Node
    test test
    LeetCode 115 Distinct Subsequences
    LeetCode 114. Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/Infancy/p/12510622.html
Copyright © 2020-2023  润新知