事务管理

springMVC+mybatis事务管理总结

这一生的挚爱 提交于 2020-01-04 02:52:42
1.spring,mybatis事务管理配置与@Transactional注解使用: 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。 Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects) 支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用 提供比其他事务API如JTA更简单的编程式事务管理API 与spring数据访问抽象的完美集成 事务管理方式 spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码

事务隔离级别小记

对着背影说爱祢 提交于 2020-01-04 01:21:40
事务的四个属性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。 1.原子性(Atomic) 最重要的原则,也是最容易理解的原则。被事务管理的所有方法,要么一起被提交,要么一起回滚。 2.一致性(Consistency) 事务在系统完整性中实施一致性,如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于新有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。 3.隔离性(Isolation) 在隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。重要的是,在隔离状态执行事务,系统的状态有可能是不一致的,在结束事务前,应确保系统处于一致状态。但是在每个单独的事务中,系统的状态可能会发生变化。如果事务不是在隔离状态运行,它就可能从系统中访问数据,而系统可能处于不一致状态。通过提供事务隔离,可以阻止这类事件的发生。 4.持久性(Durability) 持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的

分布式事务框架-seata初识

↘锁芯ラ 提交于 2020-01-03 16:34:28
一、事务与分布式事务 事务,在数据库中指的是操作数据库的最小单位,往大了看,事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。 那为什么会有分布式事务呢?单机事务是通过将操作限制在一个会话内通过数据库本身的锁以及日志来实现ACID.因为引入了分布式架构,所以事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.简单说就是多各数据库之间无法保证保证各自的操作同时成功或同时失败。 二、介绍 Seata:Simple Extensible Autonomous Transaction Architecture,简易可扩展的自治式分布式事务管理框架,其前身是fescar。阿里巴巴GTS的开源版实现,是一种分布式事务的解决方案。 三、架构 Coordinator Core:最下面的模块是事务协调器核心代码,主要用来处理事务协调的逻辑,如是否 Commit、Rollback 等协调活动。 Store:存储模块,用来将我们的数据持久化,防止重启或者宕机数据丢失。 Discover:服务注册/发现模块,用于将 Server 地址暴露给 Client。 Config:用来存储和查找服务端的配置。 Lock:锁模块,用于给 Seata 提供全局锁的功能。 Rpc:用于和其他端通信。 HA-Cluster

SQL Server查询优化与事务处理

早过忘川 提交于 2020-01-03 08:05:28
博文目录 一、索引 二、视图 三、存储过程 四、系统存储过程 五、触发器 六、事务 七、锁 一、索引 索引提供指针以指向存储在表中指定列的数据值,然后根据指定的次序排列这些指针,再跟随指针到达包含该值的列。 1、什么是索引 数据库中的索引与书籍中的目录相似。在一本书中,无需阅读整本书,利用目录就可以快速的查找到所需的信息。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据。书中的目录就是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是某个表中一列或若干列值的集合,以及物理表示这些值得数据业的逻辑指针清单。 索引是SQL Server编排数据的内部方法,它为SQL Server提供一种方法来编排查询数据的路由。 索引页是数据库中存储索引的数据页。索引页存放检索数据行的关键字页以及该数据行的地址指针。通过使用索引,可以大大提高数据库的检索速度,改善数据库性能。 2、索引分类 1)唯一索引 唯一索引不允许两行具有相同的索引值。 如果现有数据中存在重复的键值,则一般情况下大多数数据库不允许创建唯一索引。当新数据使表中的键值重复时,数据库也拒绝接收此数据。创建了唯一约束,将自动创建唯一索引。尽管唯一索引有助于找到信息,但是为了获得最佳性能,建议使用主键约束。 2)主键索引 在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。

如何运用领域驱动设计 - 工作单元

江枫思渺然 提交于 2020-01-01 17:39:06
目录 概述 直接看东西 什么是工作单元 如何实现工作单元 懒的模式 实现思路 落地代码 缺陷 总结 新年伊始,祝大家喜乐如意,爱和幸福“鼠”不尽!♫. ♪~♬.♩♫~ 概述 在上一篇 《如何运用领域驱动设计 - 存储库》 的文章中,我们讲述了有关仓储的概念和使用规范。仓储为聚合提供了持久化到本地的功能,但是在持久化的过程中,有时一个聚合根中的各个领域对象会分散到不同的数据库表里面;又或者是一个用例操作需要操作多个仓储;而这些操作都应该要么同时成功,要么同时失败,因此就需要为这一系列操作提供事务的支持,而事务管理就是由工作单元来提供的。在上一篇中,可能已经提到了工作单元,但是仅仅是一笔带过,现在我们就来详细的探究该如何更好的来实现工作单元。(文章的代码片段都使用的是 C# ,案例项目也是基于 DotNet Core 平台)。 直接看东西 在上一篇文章中,已经为大家提供了一个Github的Demo。如果已经下载过该Demo的同学,您现在直接进行Pull就可以获得最新的版本了;如果还没有下载该Demo的同学也可以戳下方的跳转链接获取。 GitHub 地址,点击直达哟 在这里我们可以先来看一下,该项目的应用代码是什么样子: [HttpPost] public ActionResult<string> Add() { //使用仓储来处理聚合 _itineraryRepository.Add(

MySQL基础之事务编程学习笔记

自古美人都是妖i 提交于 2020-01-01 12:27:54
MySQL基础之事务编程学习笔记 在学习《MySQL技术内幕:SQL编程》一书,并做了笔记。本博客内容是自己学了《MySQL技术内幕:SQL编程》事务编程一章之后,根据自己的理解做的笔记,内容和书本并不一致,不过书本实验都经过自己验证,基于MySQL5.7版本。做笔记的目的是方便自己复习,同时分享出来或许对其他人或许有点帮助 1、事务概述 事务是数据库区别于文件系统的重要特性之一,提到事务肯定会想到事务的4个特性ACID,要保证业务的正常使用,必须保证ACID,ACID表示原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),一个运行良好的事务系统也是要求具备这些特征 原子性(atomicity):一个事务必须被视为一个不可分割的最小工作单位,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,不能只执行一部分操作 一致性(consistency):一致性要求数据库总是从一个一致性的状态转换为另外一个一致性的状态,比如银行转账的例子,一个用户转账账号里减了200元,另外一个收账账号必须增加,一个失败数据必须全部回退状态,要保证事务一致性 隔离性(isolation):一般来说,一个事务所做的修改在提交之前对其它事务来说都是不可见的 持久性(durability):事务一旦提交

MySQL快速入门(四)

折月煮酒 提交于 2020-01-01 00:16:35
1 事务处理 接下来我会带大家一起来熟悉mysql中的事务处理机制 1.1 事务概述 l 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表 才支持事务 。 l 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。 l 事务用来管理 DDL、DML、DCL操作,比如 insert,update,delete 语句 一般来说,事务必须满足四个条件 1. Atomicity (原子性) 原子性: 构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。 2. Consistency (稳定性、一致性) 稳定性 (一致性) : 数据库在事务执行前后状态都必须是稳定的。 3. Isolation (隔离性) 隔离性: 事务之间不会相互影响。 4. Durability (可靠性、持久性) 可靠性 (持久性) : 事务执行成功后必须全部写入磁盘 。 1.2 MySQL事务支持 常见的操作有三步 1. BEGIN或START TRANSACTION;显式地开启一个事务; 2. COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的; 3. ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务

MySQL学习笔记2——事务的隔离级别

…衆ロ難τιáo~ 提交于 2019-12-31 02:12:43
文章目录 一、事务的隔离级别 二、事务隔离的实现 三、幻读 1.幻读是什么 2.幻读有什么问题 3.如何解决幻读 思考题 一、事务的隔离级别 提到事务,你肯定会想到 ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性),隔离级别就是“隔离性”的具体体现。 当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题。 脏读 :当数据库中一个事务A正在修改一个数据但是还未提交或者回滚,另一个事务B 来读取了修改后的内容并且使用了, 之后事务A提交了,此时就引起了脏读。 此情况仅会发生在: 读未提交的的隔离级别. 不可重复读 :在一个事务A中多次操作数据,在事务操作过程中(未最终提交),事务B也才做了处理,并且该值发生了改变,这时候就会导致A在事务操作的时候,发现数据与第一次不一样了。 就是不可重复读。 此情况仅会发生在:读未提交、读提交的隔离级别. 幻读 :事务a 开启, 查询符合条件的数据 ,发现有10条, 准备将这10条记录修改, 此时事务b开启, 插入了一条符合事务a查询条件的记录. 提交事务, 回到事务a, a也提交事务, 当再次查询到时候, 发现修改了11条。感觉发生了幻觉一样. 此为幻读.

MongoDB应用及分片

旧城冷巷雨未停 提交于 2019-12-30 22:48:22
文章目录 1.应用篇 1.1 体系结构 1.1.1 MongoDB的逻辑结构 1.1.2 MongoDB的数据库 1.1.3 MongoDB的数据结构 1.2 MongoDB的启动和停止 1.2.1 启动 1.2.2 停止 1.3 事务 1.3.1 事务区别 1.3.2 事务应用 1.3.3 两阶段提交 1.3.4 GridFS 1.3.4.1 MongoDB写入策略(writeConcern) 1.3.4.2 GridFS简介 1.3.5 MapReduce 2.管理篇 2.1 数据备份和恢复 2.1.1 数据导出 2.1.1.1 mongoexport 2.1.1.2 mongodump 2.2.2 数据导入 2.1.2.1 mongoimport 2.1.2.2 mongostore 2.2 访问控制 2.3 进程控制 3.性能篇 3.1 索引 3.2 执行计划 3.3 性能优化 4.架构篇 4.1 副本集 4.1.1 副本集简介 4.1.2 副本集的安装 4.1.3 副本集的维护 4.2 分片 4.2.1 分片简介 4.2.2 分片的相关操作 4.2.3 分片中对于Shard key(片键)的选择 1.应用篇 1.1 体系结构 1.1.1 MongoDB的逻辑结构 MongoDB的逻辑结构,主要由: 文档 (document)、 集合 (collection)、 数据库

MongoDB 4.2新特性:分布式事务、字段级加密、通配符索引、物化视图

徘徊边缘 提交于 2019-12-29 21:58:04
MongoDB 4.2已经发布,我们来看看它增加了哪些新特性?分布式事务?数据库加密?通配符索引? 在2019年MongoDB World大会上,CTO Eliot Horowitz介绍了MongoDB 4.2中的一些功能,这些功能扩展了其在数据库技术方面的领先地位:分布式事务(Distributed Transactions),字段级加密(Client Side Field Level Encryption),通配符索引(Wildcard Indexing)、按需物化视图(Materialized Views)。 这些都是重大的改进,表明MongoDB在企业级功能方便更加完善。 MongoDB 4.2提升了事务和分析技术水平。它提供大规模的分布式事务的ACID担保和复杂的数据处理流程,还有最先进的加密控制保护机制。我们可以在任何地方运行MongoDB4.2:在本地数据中心,云上、混合云、Atlas云上。我们可以获得阿里云、AWS,Azure和GCP可用的完全托管,云原生的MongoDB服务。阿里云全球第一个实现了MongoDB异地多活架构。可以支持互联网跨国公司的大规模出海业务。 现在使用MongoDB的公司越来越多了,技术架构方案也越来越成熟。MongoDB新特性也是为了满足更多的企业级业务场景需求。 1. MongoDB 4.2 新特性 先来大体上看看有哪些改进,作为4