当前位置:Gxlcms > 数据库问题 > 关于ORACLE事务处理的一些笔记

关于ORACLE事务处理的一些笔记

时间:2021-07-01 10:21:17 帮助过:13人阅读

技术分享  设置事务的隔离级别。
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
SET TRANSACTION READ ONLY;

技术分享  已提交读取和串行化读取中:
 读操作都不会阻塞其他用户的写操作。
 已提交读取中sql的执行查询到的是sql执行那一点的数据状态。
 串行化读取中slq的执行查询到的是事务开始那一点的数据状态。
 

技术分享  串行化读取并不是真的串行的。串行事务中读取的内容可以被其他用户修改并提交,只是当前事务看不到而已。串行事务不能解决所有的问题,有时候需要在应用层开发代码来进行控制。

20131014 周一

oracle概念手册中文版 第13章 事务管理

 

技术分享  如果系统中存在长时间运行的写事务,且其所操作的数据同时还会被大量的小事务更新,则此类系统不应采用串行化模式。因为长事务所需更新的数据可能会被其他事务抢先更新,则长事务可能需要重复地回滚,浪费系统资源。需要注意的是,其他数据库管理系统所实现的串行化隔离(使用读取锁(read-locking))同样不适合上述情况,因为长事务(即便是只执行读取操作的事务)会和短小的写事务相互阻塞。

技术分享  使用select * form ttt for update;(在存储过程中需要在execute immediately中执行)可以获取对应行的排他锁。排他锁是一种阻止其他事务进行更新的锁。

技术分享  获取表的排他锁:
 lock table pub_organ in exclusive mode;锁定整张表其他用户不可以执行dml操作,也不可以获取其他任何锁。

获取表的共享锁: 
lock table pub_organ in share mode;;锁定整张表其他用户不可以执行dml操作,但是也可以获取共享锁。

不管是那种模式,lock table的代码就像一句update的代码一样,遇到commit或者rollback后才会解除lock。如果表中的某一行被更新未提交,或者插入为提交,那么lock操作将阻塞。

 

 

技术分享  自治事务:如果对一个过程设置了自治事务,那么调用它的外层和它本身使用两个事务,互不影响。

关于ORACLE事务处理的一些笔记

标签:_id   中文   font   nsis   end   update   回滚   管理系   用两个   

人气教程排行