事务处理

事务处理

可紊 提交于 2019-12-05 17:39:22
acid 原子性是基础,隔离性是手段,一致性是约束条件,而持久性是我们的目的 原子性:记录之前的版本,允许回滚 一致性:事务开始和结束之间的中间状态不会被其他事务看到 隔离性:适当的破坏一致性来提升性能与并行度 例如:最终一致~=读未提交。 持久性:每一次的事务提交后就会保证不会丢失(日志) 来源: https://www.cnblogs.com/autointerface/p/11937670.html

ERP WIP 部分API应用 详解

老子叫甜甜 提交于 2019-12-05 14:23:35
工单创建 (create work order) PROCEDURE new_work_order(p_wip_entity_id NUMBER, p_organization_id NUMBER, x_error_status OUT VARCHAR2, x_error_message OUT VARCHAR2) IS l_iface_rec wip.wip_job_schedule_interface%ROWTYPE; --工单任务接口表 CURSOR c_wdj IS SELECT * FROM cux_wip_discrete_jobs_temp cwdj WHERE cwdj.wip_entity_id = p_wip_entity_id AND cwdj.organization_id = p_organization_id; BEGIN -- l_iface_rec.last_update_date := SYSDATE; l_iface_rec.last_updated_by := fnd_global.user_id; l_iface_rec.creation_date := SYSDATE; l_iface_rec.created_by := fnd_global.user_id; -- l_iface_rec.group_id := wip.wip_job

mysql事务与PDO事务处理-转载

风流意气都作罢 提交于 2019-12-05 08:49:56
1、MySQL事务   MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!     1)在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务     2)事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行     3)事务用来管理insert,update,delete语句一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)       1、事务的原子性:一组事务,要么成功;要么撤回。       2、稳定性 : 有非法数据(外键约束之类),事务撤回。       3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。       4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。 ———————————————— 在Mysql控制台使用事务来操作

JTA 深度历险

不羁岁月 提交于 2019-12-04 07:48:37
利用 JTA 处理事务 什么是事务处理 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下 1. 将 A 账户中的金额减少 500 2. 将 B 账户中的金额增加 500 这两个操作必须保正 ACID 的事务属性:即要么全部成功,要么全部失败;假若没有事务保障,用户的账号金额将可能发生问题: 假如第一步操作成功而第二步失败,那么用户 A 账户中的金额将就减少 500 元而用户 B 的账号却没有任何增加(不翼而飞);同样如果第一步出错 而第二步成功,那么用户 A 的账户金额不变而用户 B 的账号将增加 500 元(凭空而生)。上述任何一种错误都会产生严重的数据不一致问题,事务的缺失对于一个稳定的生产系统是不可接受的。 J2EE 事务处理方式 1. 本地事务:紧密依赖于底层资源管理器(例如数据库连接 ),事务处理局限在当前事务资源内。此种事务处理方式不存在对应用服务器的依赖,因而部署灵活却无法支持多数据源的分布式事务。在数据库连接中使用本地事务示例如下: 清单 1. 本地事务处理实例 public void

MySQL总结(5)

ぃ、小莉子 提交于 2019-12-04 03:38:23
视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num AND prod_id='TNT2'; 假如可以把整个查询包装成一个名为 productcustomers 的虚拟表 SELECT cust_name,cust_contact FROM productcustomers #this is a 视图 WHERE prod_id='TNT2' productcustomers 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询(与上面用以正确联结表的相同的查询)。 😁 重用SQL语句。 😁 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必 知道它的基本查询细节。 😁 使用表的组成部分而不是整个表。 😁 保护数据。可以给用户授予表的特定部分的访问权限而不是整个 表的访问权限。 😁 更改数据格式和表示。视图可返回与底层表的表示和格式不同的 数据。 😘 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相 同的名字)。 😘 对于可以创建的视图数目没有限制。 😘 为了创建视图,必须具有足够的访问权限

oracle 用户与表空间关系

北城余情 提交于 2019-12-03 22:47:44
转: oracle 用户与表空间关系 oracle用户与表空间关系 用户=商家 表=商品 表空间=仓库 1. 1个商家能有很多商品,1个商品只能属于一个商家 2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放入A和B 3. 仓库不属于任何商家 4. 商家都有一个默认的仓库,如果不指定具体仓库,商品则放到默认的仓库中 oracle中用户的所有数据都是存放在表空间中的,很多个用户可以共用一个表空间,也可以指定一个用户只用某一个表空间。 表空间:创建表空间会在物理磁盘上建立一个数据文件,作为数据库对象(用户、表、存储过程等等)的物理存储空间; 用户:创建用户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间;创建用户后,可以在用户上,创建表、存储过程等等其他数据库对象; 表:是数据记录的集合; 创建过程: 表空间--->用户--->表; 所属关系: 表空间 包含 用户 包含 表; http://www.cnblogs.com/cici-new/archive/2012/12/25/2831740.html 1.首先是ORACLE的整体结构。 oracle中的一个数据库就是一个实例. oracle的一个用户就是一个Schema(即方案). oracle的结构是===           实例->用户->表(用户属于数据库实例,表属于某个用户)

ZooKeeper(五):事务处理之更新数据逻辑解析

不想你离开。 提交于 2019-12-03 20:35:32
  通过前些文章,我们已经完全从整体架构和数据接入方面理解了ZK的前情工作。接下来,我们就来看ZK的正式工作吧。   本文以 setData /a data 这个命令作为出发点,来观察zk是如何处理来自客户端的数据更新操作的吧!   首先,我们需要明确各个角色所担任的工作,然后才能更好的理解其工作流程。我们以 Leader 为当前客户端连接的角色,揭开其 更新数据的面纱。其责任链是这样的:   LeaderRequestProcessor -> PrepRequestProcessor -> ProposalRequestProcessor -> CommitProcessor -> ToBeAppliedRequestProcessor -> FinalRequestProcessor   当然了, LeaderRequestProcessor 仅起到一个流程转发的作用,我们也不管它了。所以,起点是 PrepRequestProcessor 。 一、 PrepRequestProcessor 初步处理数据   有一点明确的是,每个独立运行的 RequestProcessor, 都是通过队列与一个 RequestProcessor 通信的。 PrepRequestProcessor 也一样,在接到 LeaderRequestProcessor sumit 过来的数据后

oracle闪回版本和闪回事务查询 详解

做~自己de王妃 提交于 2019-12-03 18:14:30
--- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间内的各个版本 --- 使用闪回事务查询查看事务处理历史记录或行 优点 : 闪回技术由于只能处理更改数据,所以从根本上改变了恢复技术。使用这个技术时,从错误中恢复花费的时间等于制造错误所花费的时间。当闪回技术使用时,它与介质恢复相比,在易用性、可用性和还原时间方面有明显的优势。 闪回数据库使用闪回日志执行闪回。闪回删除使用回收站。其他所有功能都使用还原数据。 闪回时间浏览 闪回技术提供的功能可用于查询方案对象的过去版本、查询历史记录数据以及执行更改分析。每个事务处理在逻辑上都会生成新版本数据库。使用闪回技术,可通过浏览这些版本来查找错误以及原因。 · 闪回查询:查询特定时间点的所有数据。 · 闪回版本查询:查看两个时间之间行的所有版本已经更改了行的事务处理。 · 闪回事务处理查询:查看事务处理做的所有更改。 使用闪回查询功能时,可以对自特定时间起的数据库执行查询。通过使用select语句的 as of 子句,可指定要查看其数据的时间戳。这有助于分析数据差异。 实验一:闪回查询 实验一:闪回查询:as of timestamp SYS@ORCL>conn tyger/tyger

Springboot全局事务处理

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 13:13:01
什么是全局事务 Spring Boot(Spring)事务是通过aop(aop相关术语:通知(Advice)、连接点(Joinpoint)、切入点(Pointcut)、切面(Aspect)、目标(Target)、代理(Proxy)、织入(Weaving))切面编程来实现的,此时我们就可以对指定的包的service的方法进行事务控制. 为什么要使用全局事务 在实际开发中,有些同学命名方法时不规范,多个成员开发时,会造成混乱,维护成本特别高,代码可读性不高. 怎么配置Spring Boot全局事务 Spring Boot使用事务是非常简单的,只需要在配置类或者启动类上添加注解@EnableTransactionManagement开启事务支持,然后在service层添加注解 @Transactional(rollbackFor = Exception.class)即可. 下面是全局事务代码实现 特别提醒:mysql对应的表必须是InnoDB型才可支持事务,myisam不支持事务 package com.test.sketelon.util.config; ​ import org.aspectj.lang.annotation.Aspect; import org.springframework.aop.Advisor; import org.springframework.aop

JAVA之JDBC简单事务处理

南楼画角 提交于 2019-12-03 03:26:20
1、什么是Java事务 通常观念认为,事务与数据库有关。 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换成另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。 a 、 原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换。 b 、 一致性 事务的执行使得数据库从一种正确状态转换成另一种正确状态。 c、 隔离性 在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应显示给任何其他事务。 d 、 持久性 事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。    既然事务的概念从数据库而来