排他ロック
注記
このページ「排他ロック」は、「 占有ロック 」のエイリアス(別名ページ)です。
用語
「占有ロック/排他ロック」(exclusive lock)についての説明です。
説明
占有ロック(排他ロック)って何ですか?
占有ロックとは、同じデータに対する同時アクセスを制限する仕組みの一つで、占有ロックをかけたデータは、そのロックをかけた主体だけが読み書きできるようになります。
どういうときに占有ロックが必要になるんですか?
例えば、銀行の口座残高を更新する場合、同時に複数の入出金が発生しないように、口座データに占有ロックをかけることで、正しい残高を保証できます。つまり、データの整合性を保つために必要になる場合があります。
占有ロックをかけるとき、他の主体は何もできなくなるってことですか?
はい、その通りです。占有ロックをかけたデータに対して、他の主体は参照や更新、削除、ロックなどの操作を行うことができません。
占有ロックをかけると処理の速度や並行性に影響があるって言われましたが、具体的にどういう影響があるんですか?
占有ロックは他の主体のアクセスを完全に遮断するため、他の処理が待たされたり、並行処理が制限されたりすることがあります。そのため、占有ロックをかけるときは、必要最小限の時間だけかけるように注意する必要があります。
占有ロックと対照的な共有ロックって何ですか?
共有ロックは、他の主体も参照はできるが更新や削除はできないようにするロックです。つまり、複数の主体が同時に読み取りアクセスすることができますが、書き込みや削除はできなくなります。共有ロックは、読み込みが頻繁に発生するデータに対して使われます。
まとめ
「占有ロック/排他ロック」(exclusive lock)とは、同時に複数のプログラムやユーザーが同じデータにアクセスする場合に、そのデータに対して1つの主体だけがアクセスできるようにする仕組みのことです。
占有ロックをかけたデータは、そのロックをかけた主体だけが読み書きできるようになり、他の主体は操作できません。
これにより、データの整合性を保つことができます。
ただし、占有ロックは他の主体のアクセスを遮断するため、処理の速度や並行性に影響を与える可能性があるため、必要最小限の時間だけかけるように注意する必要があります。