WEB开发网
开发学院数据库Oracle DB2和 Oracle的并发控制(锁)比较 阅读

DB2和 Oracle的并发控制(锁)比较

 2008-09-08 12:53:33 来源:WEB开发网   
核心提示: 在一个数据库中已被加上的全部锁所占的内存空间超出了locklist定义的大小,这时,DB2和 Oracle的并发控制(锁)比较(4),数据库管理器也将试图通过为提出锁请求的应用程序申请表锁,并释放行锁来节省空间,从封锁粒度(封锁对象的大小)的角度看,Oracle DML锁共有两个层次, 锁

在一个数据库中已被加上的全部锁所占的内存空间超出了locklist定义的大小。这时,数据库管理器也将试图通过为提出锁请求的应用程序申请表锁,并释放行锁来节省空间。

锁升级虽然会降低OLTP应用程序的并发性能,但是锁升级后会释放锁占有内存并增大可用的锁的内存空间。

锁升级是有可能会失败的,比如,现在一个应用程序已经在一个表上加有IX锁,表中的某些行上加有X锁,另一个应用程序又来请求表上的IS锁,以及很多行上的S锁,由于申请的锁数目过多引起锁的升级。数据库管理器试图为该应用程序申请表上的S锁来减少所需要的锁的数目,但S锁与表上原有的IX锁冲突,锁升级不能成功。

如果锁升级失败,引起锁升级的应用程序将接到一个-912的SQLCODE。在锁升级失败后,DBA应该考虑增加locklist的大小或者增大maxlocks的百分比。同时对编程人员来说可以在程序里对发生锁升级后程序回滚后重新提交事务(例如:if sqlca.sqlcode=-912 then rollback and retry等)。

3 Oracle 多粒度锁机制介绍

根据保护对象的不同,Oracle数据库锁可以分为以下几大类:

(1) DML lock(data locks,数据锁):用于保护数据的完整性;

(2) DDL lock(dictionary locks,字典锁):用于保护数据库对象的结构(例如表、视图、索引的结构定义);

(3) Internal locks 和latches(内部锁与闩):保护内部数据库结构;

(4) Distributed locks(分布式锁):用于OPS(并行服务器)中;

(5) PCM locks(并行高速缓存管理锁):用于OPS(并行服务器)中。

在Oracle中最主要的锁是DML(也可称为data locks,数据锁)锁。从封锁粒度(封锁对象的大小)的角度看,Oracle DML锁共有两个层次,即行级锁和表级锁。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:DB Oracle 并发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接