跳到正文

平成23年度 特別試験 ITパスポート試験 問78

这道题的解析和你的作答记录。

問78
頻出度★☆☆

データベースのトランザクション処理に関する次の記述中の a, b に入れる字句の適切な組合せはどれか。 複数のユーザが同時に同じデータを更新しようとしたとき, データの整合性を保つために, そのデータへのアクセスを一時的に制限する仕組みを [ a ] という。 これを実現する一つの方法は, データを更新する前に, そのデータに [ b ] をかけ, 処理が終了するまでほかのユーザからのアクセスを制限することである。

出典 平成23年度 特別試験 ITパスポート試験 問78
解説

問 78

  • 错误ア

    a 的「路由控制」和 b 的「死锁」都不符合题干的说明,是双重错误。路由控制(routing)是决定在网络上通过哪条路径把分组送到目的地的功能,由路由器负责,与数据库的同时更新和数据一致性无关。死锁是指多个事务互相等待对方持有的锁被释放,结果谁也无法推进处理的异常状态,它不是实现排他控制的手段,反而是进行排他控制之后可能出现的不良现象,也不是可以「施加到数据上」的对象。

  • 错误イ

    b 的「锁」是正确的,但 a 的「路由控制」是错误的。路由控制是在网络层选择分组转发路径的功能,并不是数据库中限制同时访问的机制的名称。题干的空白 a 问的是「为了保持数据的一致性而临时限制访问的机制」的总称,填入那里的是排他控制。在组合题中要注意:即使一方正确,只要另一方错误,整个选项就是不正确的。

  • 错误ウ

    a 的「排他控制」是正确的,但 b 的「死锁」是错误的。死锁指的是这样一种状态:例如事务 1 锁住数据 X 的同时等待 Y 的锁,而事务 2 同时锁住 Y 并等待 X 的锁,由于这种等待的循环,双方都永久停止下来。这是应当避免的故障,而不是在更新前有意「施加」的东西。空白 b 要求的是实现排他控制的具体手段,填入那里的是锁。

  • エ

    正解 正确答案是エ(a=排他控制,b=锁)。空白 a 处应填入的是排他控制。当多个用户(事务)同时尝试更新同一数据时,会发生一方的更新结果被另一方的更新覆盖而丢失的「更新丢失(lost update)」等问题,数据的一致性会被破坏。为了防止这种情况,在某个事务正在处理目标数据期间,临时限制其他事务对该数据的访问,这种机制就是排他控制。题干中「为了保持数据的一致性,将临时限制对该数据访问的机制」这一说明,正好对应排他控制的定义。空白 b 处应填入的是锁。实现排他控制的代表性方法,就是在更新之前对目标数据(表、行、页等)加锁并将其占有,在提交等处理结束的时刻再解除的加锁方式。加锁期间其他用户的访问会被迫等待,因此与题干中「在更新数据之前,对该数据施加 [ b ] ,并在处理结束之前限制其他用户的访问」的描述一致。因此,a=排他控制、b=锁 的组合エ为正确答案。另外,锁分为为更新而独占的专有锁(排他锁),以及仅作参照时多个事务可以同时获取的共享锁,区分使用二者可以在保持一致性的同时提高并发度。

ここがポイント
  • 排他控制与锁 —— 为了让多个事务同时更新同一数据时一致性也不会被破坏,临时限制访问的机制就是排他控制。其代表性的实现方法,是在更新前占有目标数据、并在处理结束时解除的锁。锁分为供参照时可以同时获取的共享锁,以及供更新时独占的专有锁(排他锁)。
  • 死锁不是手段而是异常状态 —— 多个事务互相等待对方持有的锁被释放、双方都无法推进的状态就是死锁。它是用锁进行排他控制时可能作为副作用发生的问题,而不是实现排他控制的手段本身。另外还应区分:「路由控制」是在网络中决定分组路径的功能,不是数据库领域的术语。
用語
解答問78エ
练这一题

作答记录