Database 版 (精华区)
发信人: mm (绿色的梦), 信区: Database
标 题: 数据库技术讲座(七)-----并发处理(3)
发信站: 紫丁香 (Fri Oct 24 21:28:15 1997)
* 如果想在一段时间内使一些数据不被其它事务改变,且在本事务内
仅仅查询数据,则可用SET TRANSACTION READ ONLY 语句达到这一
目的。
* 如果想在一事务内修改一数据,且避免丢失修改,则应在读这一数
据前用SELECT FOR UPDATE对该数据加锁。
* 如果想在一事务内读一数据,且想基于这一数据对其它数据修改,
则应在读数据前对此数据用SELECT FOR UPDATE加锁。对此种类型
的应用,用这条SQL语句加锁最恰当。
* 如果想避免不可重复读现象,可在读前用SELECT FOR UPDATE对数
据加锁,或用SET TRANSACTION READ ONLY设置只读事务。
三 SYBASE的并发处理机制
SYBASE的并发处理方法与ORACLE类似,但在很多方面不一样。
SYBASE有两种粒度的封锁,一种的粒度是页,另一种的粒度是表。SYBASE
根据SQL语句的情况决定用页封锁还是用表封锁。
1 页级锁
页级锁有以下所始的三类:
* SHARED:在读操作时加共享锁。在缺省状态下,在读操作完成后
释放共享锁。
* EXCLUSIVE:在更新操作时加排它锁。在缺省状态下,在事务完成
后释放排它锁。
* UPDATE:在修改和删除操作的初期(读到被修改或删除的页时)
加修改锁。在表上加了修改锁之后,还可以再加共享锁,但不能
再加修改和排它锁。在进行修改和删除操作时,如果没有共享锁
存在,修改锁则转化为排它锁。此锁的目的是为了防止死锁。
SYBASE仅当在WHERE子句中包含索引列时才会使用页级的排它锁和修改
锁。如果在一个表上积累的页级锁数目达到了200,SYBASE会放弃页锁,转
而使用整个表上的表级锁。
--
_/ _/ _/ _/
_/_/ _/_/ _/_/ _/_/
_/ _/ _/ _/ _/ _/
_/ _/ _/ _/
_/ _/ _/ _/
※ 来源:.紫丁香 pclinux.hit.edu.cn.[FROM: space.hit.edu.c]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.269毫秒