ある町のホテルの空室数をX、この町にいく飛行機の空席数をYとする。
(1) LZZロックと予約の操作をさらに、読み込み書き込みの二つに分けて 考えると、操作の並列度が増す。J-T-R,J-T-W,LX-R-Sなどの 操作を考えれば良い。この時に、読みだしのロックは重なっても 良いが、書き込みのロックは重なってはならない。
問題2: この場合に平行して動作できる操作を横に並べて、
LX-T RX-W-S RX-W-Tなどと記述することにしよう。もっとも並列度が大きくなるようなデッドロック しない実行順序を示せ。
実際には、トランザクション一つにつきロックを一つだけとるような方法が 簡単であり効果的だ。しかし、この方法は一度にたくさんのアクセスが来る 場合には適さない。
もし、データのアクセス頻度が大きく、デッドロックは稀にしか起きない のならば、「取りあえずロックしていく。 ロックがとれないようだったら、しばらく待って、あきらめる」という方法が ある。(楽観的平行制御 Optimistic Concurrency Control)
この場合、あきらめたトランザクションは、今まで行った作業の取り消し をおこなう必要がある。これをトランザクションの アボート(abort)という。 アボートは、ディスクアクセスなどに失敗した場合にも起きる。