===========================
1.transaction control
默认由修改数据开始(tx_lock),手工:set transaction |dbms_transaction
由commit,rollback结束(rollback to savepoin不会结束transaction)
a)默认statement-level atomicity 如
savepoint statement1;
insert into t values(1);
if error then rollback to statement1;
savepoint statment2;
insert into t values(2);
if error then rollback to statement2;
b)procedure level atomicity
begin
proce1;
end; 等价于
begin
savepoint sp;
proce1;
exception when others then
rollback to sp;
end;
保持procedure操作一致性
=======
当手动写
begin
proce1;
exception when others then
null;--则回到statement-level,错误不处理
end;
2.transaction习惯
a)尽量短
b)大业务切割成定期(比如1000个)分批提交
c)
--创建index
create index i_wwm on twwm(object_name);
exec dbms_stats.gather_table_stats('SYS','TWWM',cascade => true);
--非自动增长undo(多次commit并不节省undo tablespace)
create undo tablespace undo_small
datafile 'd:\1.dbf' size 2m
autoextend off;
--使用
alter system set undo_tablespace=undo_small;
begin
for r in(select rowid rid,rownum rnum,object_name from twwm) loop--置于for循环
update twwm set object_name=lower(r.object_name) where rowid=r.rid;
if(mod(r.rnum,100)=0) then
commit;
end if;
end loop;
commit;
end;
3.distributed transactions
一个transaction可以连接多个数据库db_link
4.自治transactions(内部transaction),不影响外部
pragma autonomous_transaction (编译指示)
set timing off
select sq_aaa.nextval from dual默认用到autonomous transactions,不能会回滚
----------
create or replace procedure Autonomous_Insert
as
pragma autonomous_transaction;
begin
insert into t values('Autonomous Insert');--内部事务
commit;
end;
begin
insert into t values('Anonymous Block');
Autonomous_Insert;--内部commit不对外部影响
rollback;
end;
-----------------------------
create table audit_tab(
username varchar2(30) default user,
timestamp date default sysdate,
msg varchar2(4000)
);
create or replace trigger t_emp_audit
before update on emp for each row
declare
pragma autonomous_transaction;
i_cnt number;
begin
select count(*) into i_cnt from dual
where exist(select null from emp where empno=:new.empno
start with mgr=(select empno from emp where ename=user)
connect by prior empno=mgr;
if(i_cnt=0) then
insert into audit_tab(msg) values('Attempt to update '||new.empno);
commit;--提交不受外部影响
raise_application_error(-20001,'Access Deniedd!');
end if;
end;
b)pragma automomous_transaction用在方法,函数中
savepoint a; rollback to a;可支持精确点
savepoint回滚之后的预计,保留savepoint,其后的savepoint删除;释放该锁,之前的锁保留;
c)对update,delete可能出现的锁
for update...nowait
分享到:
相关推荐
XTS支付宝分布式事务学习指南汇编.pdf
### 分布式事务学习笔记知识点详解 #### 一、什么是分布式事务 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说,一次大的操作由不同...
在这个"mysql事务学习资料(PPT+源码)"中,你将深入理解MySQL事务的概念、类型、特性和实际应用。 1. **事务概念**:在数据库中,事务是一系列操作的集合,这些操作要么全部成功,要么全部回滚,以保持数据的一致性...
分布式事务学习,就是要理解在分布式计算环境下,如何有效地实现事务的一致性和可靠性。学习分布式事务,通常需要了解多种事务模型和相关技术,如两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC,Try-Confirm...
了解和学习分布式事务的目的是为了在设计和开发分布式应用时,能够更好地处理跨服务的业务逻辑,确保数据的一致性和系统的稳定运行。由于分布式事务涉及到的技术点和理论知识非常丰富,因此需要系统性的学习和实践...
本篇文章将重点围绕“Spring框架的学习--事务”这一主题,深入解析Spring中的事务管理机制。 首先,事务在数据库操作中扮演着至关重要的角色,确保数据的一致性和完整性。事务具有四大特性,通常被称作ACID(原子性...
- 了解分布式事务产生的原因 - 知道几种分布式事务解决方案:XA、TCC、消息事务、TA、SAGA - 知道分布式事务各种解决方案的优缺点和使用场景 - 学会使用Seata来解决分布式事务
在软件工程和计算机科学领域,分布式事务是一种确保跨多个计算机系统或数据库分布式环境中的数据一致性的机制。这通常涉及到事务管理器和多个资源管理器,以保证在分布式系统中多个进程或节点的操作要么全部成功,...
分布式事务是数据库领域中至关重要的概念,特别是在大型分布式系统中,它确保了跨越多个服务器和数据库的操作一致性。在分布式环境中,事务参与者、服务器、资源服务器和事务管理器不在同一个节点,而是分布在不同的...
分布式事务是大型分布式系统中必不可少的一个技术...总的来说,"分布式事务解决方案.zip"是一份全面的分布式事务学习资料,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅,提升对分布式事务的理解和应用能力。
本压缩包文件"易语言学习进阶事务处理"是针对易语言使用者提供的一份进阶学习资料,主要涵盖了事务处理的相关知识。 事务处理在计算机科学中是指在数据库管理系统中执行的一系列操作,这些操作被视为一个单一的工作...
此外,还有一位助理小黄和实习生小林,小黄的认真负责提供了日常事务学习的机会,而小林的行为则作为一个反面教材,提醒实习生要保持谦逊和专业。 3. 业务实践:事务所的主营业务包括审计和验资,通常由注册会计师...
在Spring框架中,事务管理是核心特性之一,它使得开发者能够在多操作数据库时保持数据的一致性和完整性。本文将深入探讨Spring事务管理的源码,理解其背后的实现机制。 首先,Spring事务管理有两种主要模式:编程式...
支付宝大规模SOA系统中的分布式事务处理_程立_SD2C2008.pdf
在易语言的学习过程中,进阶事务处理是提升技能的重要环节。事务处理通常涉及到数据库操作、多线程、错误处理和程序流程控制等复杂技术,对于软件的稳定性和效率有着至关重要的作用。 在这个“易语言学习进阶事务...
SQL Server支持三种事务模式:显式事务、自动提交事务和隐式事务。显式事务允许开发人员明确开始和结束事务,通常使用BEGIN TRANSACTION、COMMIT TRANSACTION和ROLLBACK TRANSACTION语句。自动提交事务是默认模式,...
在学习过程中,阅读博客如《spring hibernate 事务管理学习笔记(一)》是非常有益的,它通常会包含具体的示例代码和实践建议。你可以参考这个博客链接(https://microjava.iteye.com/blog/525973),结合实际项目,...
在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...