次世代システム研究室の データストア 好きの Y.I. です。 MySQL/MariaDB/Percona Server でロックを取得して排他制御する際に便利なユーザーレベルロック GET_LOCK についてご紹介します。 DBで排他制御というとレコードロックやテーブルロックなどがあります。レコードロックにおいては、 SELECT FOR UPDATE で解放漏れなど排他制御を苦労されたことがあるかと思います。 ご紹介する GET_LOCK だと任意の文字列でロックを取得することができシンプルに排他制御が可能になります。イメージ的には MySQL に任意の文字列でフラグを立てて排他制御するイメージになります。 特に、ユーザー毎に排他制御をする要件に有効です。 例えば、ゲームのようなユーザーIDがありアイテムなどの消費や取得を厳しく排他制御したいケースなどです。 使い方 実行するコマンドは
![MySQL でシンプルな排他制御を GET_LOCK で実現する! - GMOインターネットグループ グループ研究開発本部](https://cdn-ak-scissors.b.st-hatena.com/image/square/61d9248510941662a0013bc6d8e37239f5b565d6/height=288;version=1;width=512/https%3A%2F%2Fwww.gmo-jisedai.com%2Fwp-content%2Fuploads%2Ficons8-mysql-100.png)