[go: nahoru, domu]

コンテンツにスキップ

「並行性制御」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m →‎外部リンク: {{Database}}
Thijssie!bot (会話 | 投稿記録)
m ロボットによる 追加: zh:并发控制
52行目: 52行目:
[[he:בקרת מקביליות]]
[[he:בקרת מקביליות]]
[[vi:Kiểm soát truy cập đồng thời]]
[[vi:Kiểm soát truy cập đồng thời]]
[[zh:并发控制]]

2010年1月5日 (火) 10:41時点における版

並行性制御(へいこうせいせいぎょ、: Concurrency Control)とは、データベースについて、トランザクションデータ完全性を失うことなく安全に実行されることを保証する手法である。並行性制御は特にデータベース管理システム (DBMS) に適用され、トランザクションがACID原則(後述)に従って安全に実行されることを保証する。DBMSはシリアライズ可能 (Srializable) で復旧可能 (Recoverable) なスケジュールだけを許すよう設計されなければならず、中断されたトランザクションを取り消す際にコミット済みのトランザクションの結果が失われないことを保証しなければならない。

並行計算並列コンピューティングマルチプロセッシングなど)に関する情報工学の一分野では、並行性制御が並行実行による高速性と処理結果の正当性を両立させる手段として使われている。

データベース以外のメモリ上のみのデータ構造によるシステムでも、ディスク上のデータベースでも、いくつかの並行性制御のためのアルゴリズムが使われている。

データベースにおける並行性制御

トランザクションのACID原則

  • 原子性 (Atomicity) - 操作は全体が行われるか全く行われないかのいずれかである。換言すればトランザクションは外から見て不可分に行われる。
  • 一貫性 (Consistency) - 全てのトランザクションはデータベースの一貫した状態を保つ。
  • 独立性 (Isolation) - トランザクション同士が互いに影響を与えることはできない。
  • 永続性 (Durability) - コンピュータシステムクラッシュしても成功したトランザクションの結果は失われない。

並行性制御機構

並行性制御機構は以下の2つに大別される。

  • 楽観的 - 操作が実際に行われるまでトランザクションの同期を遅延させる。衝突は起きないだろうと想定しているが、実際に操作するまでわからない。
  • 悲観的 - 最初からトランザクションが並行して実行されるもの見なして同期を行う。ブロックが発生する可能性はより高く想定され、予期されている。

並行性制御の手法は以下のように様々だが、厳密なツーフェーズロックが主に使われている。

ロックはデータベースオブジェクトに関連付けられた管理オブジェクトである。

ロックを使用しない並行性制御手法もある。ロックに基づく全ての実装とロックを使用しない実装の大部分は衝突シリアライズ可能 (Conflict Serializable) なスケジュールを結果として保証する。しかし、研究レベルではさらに並行性を強化してスケジュール計画生成のオーバヘッドを無視できるようになるビューシリアライズ可能(View Serializable)なスケジュールの研究が進んでいる。

関連項目

外部リンク

以下、いずれも英文