テーブルのロック

テーブルのロック

複数のユーザーが1つのデータベースを操作する場合、2人以上のユーザーが同時に同じテーブルのデータを追加/更新することが起こり得ます。これにより、データの整合性が失われてしまう場合があります。

例えば、ある時点で、商品Aの在庫が10個だったとします。ここで、2人のユーザーが商品のテーブルを同時に更新し、それぞれが在庫を1個減らす処理を行ったとします。このとき、仮に図2のような順序で処理が行われたとすると、本来なら在庫が2個減らなければならないところで、在庫が1個しか減らないという現象が起こってしまいます。

このようなことを防ぐには、「ロック」(lock)と呼ぶ機能を使います。ロックには、以下の2種類があります。

  1. 排他ロック --- 他のユーザーが書き込み/読み出しともできないようにする
  2. 共有ロック --- 他のユーザーは書き込みできないようにする(読み込みは可)

図2の例では、ユーザーAが処理を始める前に、まず商品のテーブルをロックします。そして、在庫の更新が終わったら、商品テーブルのロックを解除します。

こうすれば、ユーザーAが商品テーブルを操作している間は、ユーザーBは商品テーブルを操作することができなくなり、商品テーブルのロックが解除されるのを待つ状態になります。その結果、図2のような問題は発生しなくなります。

ストアド・プロシージャとトリガ

多くのRDBMSには、「ストアド・プロシージャ」(stored procedure)と呼ぶ機能があります。ストアド・プロシージャは、RDBMSの内部でプログラムを実行して、一連の処理をRDBMS内で完結させる機能です。

RDBMSとアプリケーション・ソフトは、処理を分担しながら動作します。アプリケーション・ソフトはRDBMSに対してSQLを発行し、その結果を受け取って処理を進めます。ただし、SQLを発行する回数が多くなると、RDBMSとアプリケーション・ソフトとの間の通信量が多くなり、システムのパフォーマンスが落ちます。

そこで、複数のSQLからなる処理をストアド・プロシージャとしてまとめ、RDBMS側で実行します。これにより、RDBMSとアプリケーションとの間の通信量が減り、システムのパフォーマンスが向上する場合があります。

ストアド・プロシージャの一種のような機能として、「トリガ」(trigger)もあります。トリガは、行の追加や削除などの特定のタイミングで、RDBMS内でプログラムを実行する機能です。

例えば、あるテーブルから行を削除した際に、そのテーブルと結合するほかのテーブルから、関連する行を自動的に削除する、といった処理をトリガで行うことができます。

一度に複数の行が操作の対象になる場合のトリガの処理は、RDBMSによって異なっています。テーブル全体に対して1回トリガを実行する製品もあれば、対象になった行ごとに複数回トリガを実行する製品もあります。

なお、ストアド・プロシージャやトリガは、SQLを拡張した構文で記述します。この構文は、RDBMSごとの差異が比較的大きいです。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30