事务管理,是应用程序中的一种牺牲性能提高数据的一致性完整性的手段。在IBM博客中有以下内容:
引用
少数应用程序极少或从来不会抛出异常。这些应用程序基于编写良好的代码、编写良好的验证例程,并经过了充分的测试,有代码覆盖支持,可以避免性能损耗和与事务处理有关的复杂性。这种类型的应用程序只需考虑事务支持的一个特性:原子性。原子性确保所有更新被当作一个单独的单元,要么全部提交,要么回滚。但是回滚或同时更新不是事务支持的惟一方面。另一方面,隔离性 将确保某一工作单元独立于其他工作单元。没有适当的事务隔离性,其他工作单元就可以访问某一活动工作单元所做的更新,即使该工作单元还未完成。这样,就会基于部分数据作出业务决策,而这会导致失败的交易或产生其他负面(或代价昂贵的)结果。
事务管理是保证服务的完整,要么提交,要么回滚,这在Linux/Unix系统中也随处可见,如果每个程序没安装成功,中途报错影响使用的话,会发生rollBack。在应用程序中也是一个道理,比如在一个服务中,重要的更新报错出错,导致业务没有实现,就有道理和理由进行回滚,撤销本次操作开始到更新操作中间的写操作,这是应用场景之一。上一场景时重要的更新,相对就有不重要的操作,比如在注册账户的过程中,需要邮件服务器向用户邮箱发送通知确认邮件,但此时邮件服务器失去连接,我们没有理由撤销用户的注册过程,所以此处我们有必要认为此次注册操作成功,至于邮件我们可以将其加入通知任务列表异步处理,这是不能进行回滚的场景之一。
REQUIRED
支持当前上下文中存在事务,如果没有事务就创建一个新的,如果有,则在当前事务下执行
SUPPORTS
支持当前上下文中存在事务,如果没有事务,就在无事务上下文下执行
MANDATORY
支持当前上下文中存在事务,如果没有事务就抛出异常
REQUIRES_NEW
产生一个新的事务,如果当前上下文中有事务就挂起原来事务
NOT_SUPPORTED
不支持当前上下文存在事务,总是在无事务上下文下执行,存在的事务会进行挂起操作
NEVER
不支持当前上下文存在事务,如果存在事务则抛出异常
NESTED
如果当前上下文中存在事务就执行一个内嵌的事务
非事务环境,一般可以用于查询,无需挂起加锁,加快查询。如果对写操作设置SUPPORTS,同时表明readonly是无效,此时没有事务,仍然会被写入。
注意事务是牺牲性能保证数据的一致性完整性,如果无需保证数据检验而又使用事务管理,反而或因为无谓加锁导致性能降低。
分享到:
相关推荐
mysql事务处理的意义 事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来...
事务处理广泛地应用于数据库和操作系统领域,并在现代计算机系统中监控、控制和更新信息。本书向读者展示了大型的、分布的、异构的计算机系统是如何进行可靠工作的。作者使用事务作为基本概念,说明了在有限的资金和...
联机事务处理系统,OLTP介绍
关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....
PostgreSQL技术内幕:事务处理深度探索.docx
易语言学习进阶事务处理源码,学习进阶事务处理
C#中的事务处理例子程序,适合初学者,可以直接用,在数据库的同步控制上很有用
事务处理能力部分(TCAP).ppt事务处理能力部分(TCAP).ppt事务处理能力部分(TCAP).ppt事务处理能力部分(TCAP).ppt事务处理能力部分(TCAP).ppt事务处理能力部分(TCAP).ppt事务处理能力部分(TCAP).ppt事务处理能力部分...
( 事务处理--介绍事务原理和事务实现.docx )
大家跨服务器加事务的时候经常遇到以下报错:导入Microsoft分布式事务处理协调器MSDTC,网上大部分教程都是服务器配置msdtc,但是发现两个服务器都配置之后还是不行,可参照此图片解决,已验证过,不好用找我,最低...
本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容。一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果。 一个分布式事务处理只是一个在两个或更多...
java代码-使用java解决数据库事务处理的源代码 ——学习参考资料:仅用于个人学习使用!
数据库事务处理课件,中文版,详细的课件。值得下载啊!
Java事务处理Java事务处理.docJava事务处理.doc
java事务处理的三种方式 spring核心功能理解
本资源介绍了如果使用c#带参数的事务处理
共计132页的ppt,详细讲述数据库事务处理技术
包括多适配器使用事务处理,适配器+命令组合使用事务处理等,内含SQL 2000及2005示例
JSP运用事务处理
事务处理原理(第2版)英文版 summary of topics The enterprise that pays for a transaction processing system wants it to give fast service, be inexpensive to buy and operate, and be scalable as usage ...