首页 > 试题广场 >

不允许任何其他事务对锁定目标再加任何类型锁的锁是( )?

[单选题]

不允许任何其他事务对锁定目标再加任何类型锁的锁是( )?

  • 共享锁
  • 排他锁
  • 共享锁或排他锁
  • 以上都不是
数据库是一个多用户共同使用的共享资源,多个用户使用意味着并发性,如果对并发操作不加以控制,可能会造成数据读、写不正确的问题,加锁是实现数据库并发控制的一个非常重要的技术。锁可以分为以下3种类型:
1.共享锁(读锁)
2.排它锁(写锁)
3.更新锁(U锁)
数据库中所有对数据的事务操作都需要加锁。
如果某事务仅仅是对数据进行“读”操作,那就加“共享锁”;
如果某事务需要对数据进行“写”操作,那就需要加“排它锁”。
如果某事务,刚开始只是进行“读”操作,过一段时间之后再进行“写”操作,出于效率和防止死锁的考虑,需要引入更新锁(U锁),这类操作需要加“更新锁”,顾名思义,这种锁的特点是会“更新”的——刚开始我只是“共享锁”,但是过了一段时间我会变成“排它锁”。

如果某事务对数据加了“共享锁”,其他事务不能对它加“排它锁”“更新锁”,只能加“共享锁”;
如果某事务对数据加了“排它锁”,其他事务不能对它加任何锁;
如果某事务对数据加了“更新锁”,未升级为“排它锁”之前,其他事务能对它加“共享锁”,但不能加“排它锁”“更新锁”;升级为“排它锁”之后,其他事务不能对它加任何锁。
编辑于 2020-04-01 13:29:38 回复(0)

共享锁(S锁):又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。

如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。

排他锁(X锁):又称读锁,用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。

   如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
发表于 2018-06-14 17:15:52 回复(1)
b
发表于 2017-11-06 17:31:43 回复(0)