事务

分布式事务专题(四):分布式事务解决方案之TCC

放肆的年华 提交于 2020-01-23 03:57:14
目录: 基础概念 分布式事务理论 分布式事务解决方案之2pc 分布式事务解决方案之TCC(本章) 分布式事务解决方案之可靠消息最终一致性 分布式事务解决方案之最大努力通知 分布式事务综合案例分析 4.分布式事务解决方案之TCC 4.1.什么是TCC事务 TCC是Try、Confifirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confifirm、撤销Cancel。Try操作做业务检查及资源预留,Confifirm做业务确认操作,Cancel实现一个与Try相反的操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confifirm操作,其中Confifirm/Cancel操作若执行失败,TM会进行重试。 分支事务失败的情况: TCC分为三个阶段: Try 阶段是做业务检查(一致性)及资源预留(隔离),此阶段仅是一个初步操作,它和后续的Confifirm 一起才能真正构成一个完整的业务逻辑。 Confifirm 阶段是做确认提交,Try阶段所有分支事务执行成功后开始执行 Confifirm。通常情况下,采用TCC则认为 Confifirm阶段是不会出错的。即:只要Try成功,Confifirm一定成功

事务详解

人走茶凉 提交于 2020-01-23 01:27:59
事务 指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。 而一个逻辑工作单元要成为事务,就必须满足ACID属性。 事务的四大特性(ACID): 原子性(atomicity) 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位. 事务中的操作要么都不做,要么就全做。 一致性(consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 例:拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 事务执行的结果必须是从数据库从一个一致性状态转换到另一个一致性状态。 隔离性(Isolation) 一个事务的执行不能被其他事务干扰 隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别 脏读 不可重复读 幻读

My SQL 学习打卡 60天搞定mysql

最后都变了- 提交于 2020-01-22 15:34:03
Day01--查询语句执行流程   mysql 基础架构:        MySQL 5.5.5 版本开始InnoDB成为了默认存储引擎   连接器:   链接器超时断开参数 wait_timeout 默认 8小时   缓存   mysql 缓存提供按需使用的方式 将参数 query_cache_type 设置成 DEMAND,这样对于默认的 SQL 语句都不使用查询缓存。而对于你确定要使用查询缓存的语句,可以用 SQL_CACHE 显式指定   MySQL 8.0 版本直接将查询缓存的整块功能删掉了 mysql> select SQL_CACHE * from T where ID=10;   分析器:   分析器先会做“词法分析”。再做“语法分析”    优化器:   优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。   执行器:   首先判读用户对表有没有查询权限。如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。   数据库的慢查询日志中看到一个 rows_examined 的字段,表示这个语句执行过程中扫描了多少行。这个值就是在执行器每次调用引擎获取数据行的时候累加的 Day02--更新语句执行流程   更新比查询多涉及两个日志模块 redo log 和

数据挖掘关联性规则算法

元气小坏坏 提交于 2020-01-22 14:45:39
ID milk bread butter beer diapers 1 1 1 0 0 0 2 0 0 1 0 0 3 0 0 0 1 1 4 1 1 1 0 0 5 0 1 0 0 0 支持度(Support) sum(x) sup(x) = -------- N 譬如在上面的示例数据库中,{beer, diaper} 的支持度为 1/5 = 0.2。5 条事务中只有一条事务同事包含 beer和 diaper , 实际使用中我们会设置一个最低的支持度(minimum support), 那些大于或等于最低支持度的 X 称之为频繁的 item-set 。 置信度(Confidence) 置信度表示为规则 X ⇒ Y 在整个 T 中出现的频率。而置信度的值表示的意思是在包含了 X 的条件下, 还含有 Y 的事务占总事务的比例。同样假定 T 中含有 N 条数据, 那么置信度的计算公式为: sup(xUY) conf(x=>f)= -------- sup(x) 譬如再上面的示例数据库中,{beer, diaper} 的置信度为 0.2/0.2 = 1。表面在所有包含 beer 的事务中都会一定包含 diaper。 同样的,在实际使用中我们会设置一个最低置信度,那些大于或等于最小置信度的规则我们称之为是有意义的规则。 相关性度量 有时候使用支持度和置信度挖掘到的规则可能是无效的。

事务与并发控制

巧了我就是萌 提交于 2020-01-22 12:45:22
1 什么是事务 什么是事务? 事务是数据库执行操作的最小逻辑单元 事务可以由一个SQL组成也可以由多个SQL组成 组成事务的SQL要么全执行成功要么全执行失败 START TRANSACTION / BEGIN SELECT ... UPDATE ... INSERT ... DELETE ... COMMIT / ROLLBACK 事务开启后只能执行 DML 操作(执行DDL会执行COMMIT操作会把这个事务结束掉) 2 事务的特性 事务的特性 特征 说明 原子性( A ) 一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。 一致性( C ) 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。 隔离性( I ) 事务的隔离性要求每个读写事务的对象与其它事务的操作对象能相互分离,即该事务提交前对其它事务都不可见。 持久性( D ) 事务一旦提交了,其结果就是永久性的,就算发生了宕机等事故,数据库也能将数据恢复。 3 并发带来的问题 3.1 脏读 一个事务读取了另一个事务未提交的数据 3.2 不可重复读 一个事务前后两次读取的同一数据不一致。 3.3 幻读 指一个事务两次查询的结果集记录数不一致。 4 事务的隔离性 INNODB 的隔离级别 默认可重复读(SQL标准里面不能避免幻读,但是MySQL可以) 隔离级别 脏读 不可重复读 幻读 隔离性 并发性

Spring常见面试题总结(超详细回答)

走远了吗. 提交于 2020-01-22 09:10:26
1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成: Spring Core:核心类库,提供IOC服务; Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等); Spring AOP:AOP服务; Spring DAO:对JDBC的抽象,简化了数据访问异常的处理; Spring ORM:对现有的ORM框架的支持; Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传; Spring MVC:提供面向Web应用的Model-View-Controller实现。 2、Spring 的优点? (1)spring属于低侵入式设计,代码的污染极低; (2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; (3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 (4)spring对于主流的应用框架提供了集成支持。 3、Spring的AOP理解: OOP面向对象,允许开发者定义纵向的关系

转 事务隔离级别

可紊 提交于 2020-01-22 09:03:52
http://msdn.microsoft.com/zh-cn/library/ms173763.aspx SET TRANSACTION ISOLATION LEVEL (Transact-SQL) 更新日期: 2006 年 4 月 14 日 控制到 SQL Server 的连接发出的 Transact-SQL 语句的锁定行为和行版本控制行为。 Transact-SQL 语法约定 语法 SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE } [ ; ] 参数 READ UNCOMMITTED 指定语句可以读取已由其他事务修改但尚未提交的行。 在 READ UNCOMMITTED 级别运行的事务,不会发出共享锁来防止其他事务修改当前事务读取的数据。 READ UNCOMMITTED 事务也不会被排他锁阻塞,排他锁会禁止当前事务读取其他事务已修改但尚未提交的行。 设置此选项之后,可以读取未提交的修改,这种读取称为脏读。 在事务结束之前,可以更改数据中的值,行也可以出现在数据集中或从数据集中消失。 该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 NOLOCK 相同。这是隔离级别中限制最少的级别。 在

性能测试指标的定义

筅森魡賤 提交于 2020-01-22 08:35:02
1.事务 从客户端发请的一个或多个请求(这些请求组成一个完整的操作(多个http请求)),到客户端接收到从服务器返回的响应。 2.TPS 每秒中系统能够处理的事务数;关联1理解 3.请求响应时间 从客户端发起的一个请求开始,到客户端收到从服务器返回的响应。整个过程所耗费的时间。 4.事务响应时间 事务可能由一个或多个请求组成的,事务响应时间主要是针对于用户的角度而言,主转账;关联1理解。 5.并发定义 没有严格意义上的并发。并发总有先后,无论差距是1毫秒或者1微秒,总有一个时间差。所以并发讲的是一个时间范围内,比如1秒内的请求。 6.并发用户数 同一单位时间内对系统发起请求的用户数量。 7.吞吐量 一次性能测试过程中网络上传输的数据量的总和。 8.吞吐率 单位时间内网络上传输的数据量; 吞吐率=吞吐量/传输时间; 9.点击率 每秒中用户向服务器提交的请求数。这个指标是web应用程序特有的一个指标,可以想象为每秒钟用户总共再页面上进行多少次点击动作,但是需要注意的是一次鼠标单击的操作后,客户多可能向服务器发送了多次请求。 10.资源使用率 对不同的系统资源的使用情况,如cpu、内存、io。 性能并不是随着服务器增加节点稳定递增性能的,也会有性能的损耗,所以测算出损耗也是性能工程师的任务 来源: CSDN 作者: 抽风同学 链接: https://blog.csdn.net

springboot集成分布式事务seata-1.0.0的AT模式(nacos作为注册中心以及配置中心)

你离开我真会死。 提交于 2020-01-22 02:12:39
Seata 是什么? Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。经过多年沉淀与积累,商业化产品先后在阿里云、金融云进行售卖。2019.1 为了打造更加完善的技术生态和普惠技术成果,Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助其技术更加可靠与完备。 seata的官方文档: http://seata.io/zh-cn/index.html seata github地址: https://github.com/seata/seata 设计初衷 对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入 高性能:减少分布式事务解决方案所带来的性能消耗 发展远景 架构 TC - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM - 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。 RM - 资源管理器 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。 微服务框架支持 目前已支持 Dubbo、Spring Cloud、Sofa-RPC

Spring介绍

天大地大妈咪最大 提交于 2020-01-21 23:53:33
一.Spring简介 1. Spring介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。 2. Spring作用 Spring致力于提供一种方法管理你的业务对象。 Spring的主要目的是使JavaEE易用和促进好编程习惯。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。 3. Spring起源 Spring的出现是为了取代EJB(Enterprise JavaBean)的臃肿、低效、脱离现实的特点。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。 4. Spring体系结构 Spring 框架是一个分层架构,它包含一系列的功能要素并被分为大约20个模块。这些模块分为Core