zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    吃甘蔗(中等,模拟)
    jquery对象里面的context参数
    event对象的使用注意事项
    EcmaScript源码
    对js运算符“||”和“&&”的总结
    浏览器滚动条样式
    浏览器的重绘与重排
    input[checkbox],input[radiobox]的一些问题
    height:100%
    Sublime Text 3 多行游标
  • 原文地址:https://www.cnblogs.com/Infancy/p/12510622.html
Copyright © 2011-2022 走看看