事务处理

事务处理

当从网上书店买书时,您用货币兑换书(以信用证的形式)。如果您的信用良好,则一系列相关操作将确保您得到书,而书店得到您的钱。但是,如果在交易期间一系列操作中的某个失败,则整个交易将失败。您得不到书,而书店也得不到钱。

负责使交易平稳和可预测的技术称为事务处理。事务确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

事务处理系统由计算机硬件和承载面向事务的应用程序的计算机软件组成,此应用程序执行开展业务所需的例程事务。管理销售订单输入、机票预定、工资单、雇员记录、生产和发货的系统即属于这类系统。

事务基本原理

事务将多个任务绑定在一起。例如,假设某个应用程序执行两个任务。它首先在数据库中创建一个新表。接着调用专用对象收集和格式化数据,并在新表中插入数据。这两个任务是相关甚至相互依赖的,因此除非可用数据填充表,否则应避免创建新表。在一个事务范围内执行两个任务会加强两者之间的关系。如果第二个任务失败,则第一个任务回滚到创建新表前的点。

为了确保可预知的行为,所有事务都必须处理基本 ACID 属性(原子、一致性、隔离和持久性)。这些属性加强了关键任务事务作为"全或无"命题的作用。有关 ACID 的更多信息,请参见 ACID 属性。总之,ACID 确保一组相关任务作为一个单元成功或失败。在事务处理术语中,事务要么提交,要么中止。要提交事务,所有参与者都必须保证对数据的任何更改将是永久的。不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的。只要有一个参与者无法做出此保证,整个事务就会失败。事务范围内的所有数据更改将回滚到特定设置点。

可将事务限制到一个数据资源,如数据库或消息队列。在此情况下,本地事务由 System.Transactions 提供的事务管理器管理,这将提高性能。这些事务由数据资源控制,管理起来轻松高效。

(以上内容全部摘自MSDN)

原文地址:https://www.cnblogs.com/QLeelulu/p/1028294.html