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毫秒