.NET简谈事务本质论

发表于:2012-1-12 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王清培    来源:51Testing软件测试网采编

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

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

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

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

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

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

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

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

  图1:

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

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

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

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

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

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号