同時実行制御 【concurrency control】

概要

同時実行制御(concurrency control)とは、データベース管理システム(DBMS)が複数のトランザクション処理を同時に実行しつつデータ整合性を保つ制御のこと。

トランザクション処理は複数のデータ処理を一体不可分の単位として扱う実行方式で、実行の前後でデータに矛盾が無いことが要請される。実際のコンピュータシステムでは複数のトランザクションを同時に稼働させる必要があり、他のトランザクションの操作によって処理に矛盾を来さないよう適切に制御する必要がある。

原理的にまったく互いに干渉しないようにするにはトランザクションを並行に実行せず順番に実行する「直列化」(シリアライゼーション)をえば良いが、性能が極端に下がり処理が進まなくなってしまうため現実に採用することは難しい。

そこで、アクセスしようとする資源(テーブルレコードなど)を一時的に封鎖(ロック)して占有し、処理中は他のトランザクションアクセスを禁じる「排他制御」がわれる。テーブル単位でうか行単位でうか、他のトランザクションの読み書きを完全に禁じるか読み込みは許可するのかなど、ロックの仕方には様々な種類がある。

トランザクション分離レベル

同時実行制御におけるトランザクションの並行性(高速性)と独立性(安全性)はトレードオフ(あちらを立てればこちらが立たず)の関係にあるため、それぞれをどの水準で両立(妥協)するのかについていくつかのレベル提唱されている。よく知られるSQL標準では4段階のトランザクション分離レベルを定義している。

最も安全だが性能が低いレベルが「SERIALIZABLE」で、直列化したのと同じように他のトランザクションの影響をまったく受けないよう制御する。次に安全なのが「REPEABLE READ」で、対象データを処理中に他のトランザクションが削除・更新するのを防ぐ。

3番目は「READ COMMITED」で、他のトランザクションコミットされたの変更の影響を受ける。最も分離レベルが低いのが「READ UNCOMMITED」で、他のトランザクションによる未コミットの変更の影響も受ける(が最も性能が高い)。

(2023.3.3更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる