前言
为了设计高可用的数据库,必须要深入掌握数据库的事务。但是oracle的事务是一个非常庞大的概念及范围,需要多方面的梳理与思考,才能理解它的精髓,真正设计一个运行良好的数据库系统。 数据库事务是一套非常精巧的机制,可以从这些技术概念进行学习:
事务是实现数据库高并发的基石,非常重要
事务和事务隔离级别密切相关
事务在执行期间会产生锁
并发事务可能会产生死锁
事务和数据一致性相关,而数据库一致性又是通过mvcc实现
事务基于回滚段,二者又是什么关系
事务和对象的关联是什么
事务相关联的锁,里面有几种类型或类别
本文说说产生数据库事务的几种方法或方法,万里长征从头始,我们一步步来,慢慢迈入数据库事务的殿堂。
产生事务的几种方法
dml未提交产生事务
select for update产生事务
set transaction产生事务
dbms_transaction产生事务
示例代码
dml未提交事务
SQL> create table t_tran(a int); Table created. SQL> insert into t_tran select 1 from dual; 1 row created. SQL> col sql_text for a50 SQL> set linesize 300 SID TADDR SQL_ID PREV_SQL_ID SQL_TEXT ---------- ---------------- ------------- ------------- -------------------------------------------------- 50 0000000084201938 2un55p68csz4r insert into t_tran select 1 from dual
select for update产生事务
SQL> select * from t_tran for update; A ---------- 1 SQL> / SID TADDR SQL_ID PREV_SQL_ID SQL_TEXT ---------- ---------------- ------------- ------------- -------------------------------------------------- 50 0000000084201938 gmd5z3754t8km select * from t_tran for update
set transaction产生事务
SQL> set transaction name 'tran1'; Transaction set. SQL> select * from t_tran; A ---------- 1 SQL> / SID TADDR SQL_ID PREV_SQL_ID SQL_TEXT ---------- ---------------- ------------- ------------- -------------------------------------------------- 50 0000000084201938 3rfg8vk38qhcq select * from t_tran
dbms_transaction产生事务
SQL> exec dbms_transaction.read_only; PL/SQL procedure successfully completed. SQL> / SID TADDR SQL_ID PREV_SQL_ID SQL_TEXT ---------- ---------------- ------------- ------------- -------------------------------------------------- 50 0000000084201938 7j2qb5qfzk4hu BEGIN dbms_transaction.read_only; END;
培训课件
(收费20元)

联系方式
