過去問解きまくり研究所 ホーム

平成25年度 秋期 午前 問31

データベース

デッドロックに関する問題

“商品”表に対して,更新 SQL 文を実行するトランザクションが,デッドロックの発生によって異常終了した。異常終了後の“商品”表はどれか。ここで,“商品”表に対する他のトランザクションは,参照は行うが更新はしないものとする。

〔商品〕

商品コード商品名販売単価
A010AAA2,500
B020BBB1,000
C030CCC4,500

〔更新 SQL 文〕

DELETE FROM 商品 WHERE 商品コード = 'B020'

〔4つの肢はいずれも“商品”表です〕表の中身を字に書き起こしたもの。

答えと解説を見る

✓ これが正解イA010/AAA/2,500・B020/BBB/1,000・C030/CCC/4,500(元の表のまま・3 行)

解説

異常終了した更新は取り消され表は実行前に戻ります。

デッドロックは、二つ以上のトランザクションが互いの押さえているデータの解放を待ち合い、どちらも先へ進めなくなった状態です。このままでは止まったままなので、一方が強制的に打ち切られます。打ち切られたトランザクションが途中まで行った更新は、すべて取り消されて実行前の状態へ戻されます。一つのトランザクションの更新は、全部を反映するか一つも反映しないかのどちらかにする、という決まりがあるからです。設問の場合は削除が取り消されるので、商品コードが B020 の行を含む三行がそのまま残ります。さらに設問は、ほかのトランザクションが参照しかしないと断っています。この一言があるおかげで、戻る先が最初に示された表そのものだと言い切れます。判定の軸は、打ち切られた更新の一部が残りうるかどうかです。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成25年度 秋期 基本情報技術者試験 午前 問31(改変:原典の図表をテキストに書き起こした)

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)