zoukankan      html  css  js  c++  java
  • 谈事务的理解

    事务和锁是两个联系非常紧密的概念,它们保证了数据库的一致性。由于数据库是一个可以由多个用户共享的资源,因此当多个用户并发地存取数据时,就要保证数据的准确性,事务和锁就完成了这项功能。

    概念

    事务就是一组包含一条或多条语句的逻辑单元,每个事务都是一个原子单位,在事务中的语句被作为一个整体,要么一起被提交,作用在数据库上,使数据库数据永久的修改,要么一起被撤销,对数据库不做任何的修改

    对于这个问题比较经典的例子就是银行帐户之间的汇款转账操作.该操作在数据库中由以下3步完成:

    1:源帐户减少存储金额,例如 减少1000

    2:目标帐户增加存储金额,增加1000

    3:在事务日志中记录该事务.

    整个交易过程,我们看做一个事务,如果操作失败,那么该事务就会回滚,所有该事务中的操作将撤销,目标帐户和源帐户上的资金都不会出现变化;如果操作成功,那么将是对数据库永久的修改,即使以后服务器断电,也不会对该修改结果有影响.

    事务在没有提交之前可以回滚,而且在提交前当前用户可以查看已经修改的数据,但其他用户查看不到该数据,一旦事务提交就不能再撤销修改了,oracle的事务基本控制语句有如下几个:

    set transaction  :设置事务的属性。

    commit:提交事务。

    事务的四个特性:

    1原子性 事务的原子性是指,事务中程序是数据库的逻辑工作单位,它对数据的修改要么全部执行,要么完全 不执行。原子也意味着不可侵害,不管有多少程序,只要在同一个事务中,那么它们就是一个整体,如果都执行成功才意味着该事务成功,而有一个操作失败,那么同一个事务中的其他操作即使执行成功也没有用,事务会使其全部撤销。

    2一致性:

    事务的一致性指事务执行的前后数据库都必须处于一致性状态,它是相对脏读而言的。只有在事务完成后才能被所有使用者看见,保证了数据的完整性。例如在银行转账时,从A帐户取款但没有放到B帐户中时数据是不一致的,同时也是不完整的,其他使用者此时不能看到A中修改后的数据,只有存到B帐户中,交易完成并提交事务,这时才算数据一致,所有用户也会看到修改后的数据。

    3 分离性:分离性是指并发事务之间不能相互的干扰。也就是说,一个事务操作的数据不会被其他事务看到和操作。

    4 持久性:持久性是指一旦事务提交完成,那么这将是对数据永久的修改,即使被修改后的数据遭到破坏,也不会出现回到修改之前的情况。

  • 相关阅读:
    struts2+hibernate+Spring分层开发
    (江苏大学)校园网上网帮助工具开发详解(附源码)【行政教学区】【城市热点】
    [CLR的执行模型].NET应用程序是如何执行的?
    ASP.NET服务器对于请求的处理过程
    【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】
    ASP.NET 页生命周期和页面事件处理管道
    【分析总结】ASP.NET中的状态管理原理
    【CLRsos调试】关于方法表继承调用问题的总结
    【分析最原始验证码生成】HTTP请求处理程序
    [ASP.NET]Session在多个站点之间共享解决方案
  • 原文地址:https://www.cnblogs.com/shuanlei/p/4546971.html
Copyright © 2011-2022 走看看