.NET简谈事务本质论

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 04:09 点击:

 

这篇文章主要介绍一下事务处理的本质。

其实事务处理对我们来说并不陌生,但是很多人对事务处理的理解似乎有点弄不清,觉得事务处理只存在于数据库中。导致这样的结果是有原因的,当我们开始准备学习编程的时候,都是从某些编程语言开始学起,而不像人家的国外会先从概念、原理、模型开始学习,所以我们都会将某些技术与一些语言、平台联系在一起,导致我们学习其他的语言或者平台会很吃力。

在学校里也好还是自学也好,为了很快的上手都会去学习一些工具然后才会慢慢的去学习跟我们日常开发有关系的技术,仅仅是技术实现而不会去追根究底的问“为什么”。其实作为我们软件开发人员来说,为了跟好的发展需要有一个从概念、原理、技术实现这样的一个正确的学习方法或者说是一种梳理过程,只知其然而不知其所以然,这样会很困惑。

进入主题。我们就通过上面介绍的学习方法,先从概念到原理再到技术实现,将事务理清楚,它不仅仅是数据库中才会用到的,在计算机领域到处都会用到事务处理。

事务的概述、特性、原理:

关于事务处理的概述网上到处都是,但是几乎每篇文章都会用数据库作为事务的案例进行讲解,而不会用某种编程语言或者将两者结合起来进行讲解。

所以对初学者来说认为事务就是数据库事务,我也尝试在网上搜了一下,80%都是数据库事务,什么BeginTran............。我想我这篇文章是有价值写的,希望通过本篇文章的讲解能让您对事务有个重新的认识,不要再将事务与数据库联系在一起,数据库只是实现了事务处理的一个管理工具。

 概述:事务是一个逻辑区域,在这个逻辑区域里面的所以执行的代码都属于一个大的逻辑操作。也就是规定了,这是一个原子操作,要么都做要么都不做。保证了在任何一个环节出了问题都能恢复到最初调用前的状态。

图1:

\

特性:上面我们阐述了事务的概念,那么特性有哪些?事务是逻辑区域,将所有参与到事务处理的资源、功能纳入到统一的管理中心来,进行统一的协调管理共同完成一次重大的事务。  特性是说明事务的一些原则、特征,比如:事务的状态、事务的隔离等,事务必须具备这些特征,只有具备这些特征才算是事务。

原子性(Atomicity):事务的原子性,是指事务内部的所有操作均被视为一个整体,要么都执行成功,要么都不要执行。假如我们用事务来实现一个关于数据剪切的功能,首先我们要先剪切然后在粘贴,如果我们粘贴失败了,那么必须保证数据还要还原到最初的状态下,这虽然是两个动作,但是它在事务里面就是一个动作。

一致性(Consistency):一致性是保证事务在执行期间对数据的修改在最终不管是成功或者失败了都要使数据时正确的。就好比上面所说的,我们剪切数据,当粘贴的时候出现问题,就不能随随便便的终止了,在事务内部对数据的修改要保存这,如果是事务失败就要用最初的数据恢复,如果成功了就用修改的数据保证最后的结果。

隔离性(Isolation):隔离性比较好理解,多个事务对同一个资源的访问要相互隔离,井水不犯河水,你的修改不会受我的影响同时你的修改也不会干扰到我的执行。这样就保证了数据的完整性。当事务在执行期间访问的数据都是已经持久化后的数据,也就是一致性过后的数据,不会试图访问另一个事务内部的数据。

持久性(Durability):持久性是说事务一旦执行完毕,数据的修改将是永久性的。这个时候事务内部的中间状态已经不复存在,事务在执行期间占用的资源已经全部释放,所以这个时候无法将数据恢复到最初的状态,除非资源管理器有这方面的支持,也就是我们的数据库管理系统是可以通过日志进行恢复。(后面将会讲到资源管理器的原理)

推荐书籍:aspx?product_id=8782832&ref=customer-0-B" name="product_name" target="_blank" title="事务处理:概念与技术---计算机科学丛书">事务处理:概念与技术---计算机科学丛书

 原理:

上面我们了解了事务的概念、特性,那么事务的实现原理是如何呢,在这里我穿插一句,我们这里只讨论事务的理论跟具体用哪种语言实现或者数据库是没有任何关系的,只有搞清楚了这些理论,才能全局的理解事务处理,我保证你会对数据库的事务处理有个崭新

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • asp.net 设置GridView的选中行的实现代码
      • C#高级编程:数据库连接[1]
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET GridView列表代码示例
      • Asp.net MVC源码分析--Action Filter的链式调用
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1