pulpul 日本の試験

データベーススペシャリスト 概念書 · データベース

トランザクション処理

要点と定義

トランザクションは、データベースに対する一まとまりの処理です。ACID特性のうち原子性は、処理の全体が実行されるか、全体が取り消されるかを表します。途中までの更新だけが残らないようにする性質です。

同時実行制御は、複数のトランザクションが同時にデータを扱うとき、データの整合性を保つための仕組みです。ロック方式では、共有ロックを読み取りに、専有ロックを更新に用いることがあります。厳格な2相ロッキングではロックをトランザクション終了まで保持します。表ロックと組み合わせて直列実行と等価な結果にする条件は、過去の出題で扱った補足です。

隔離性水準は、同時実行による不整合な読み取りをどの程度防ぐかを表します。水準を高めると不整合な読み取りは減る傾向がある一方、待ちや同時実行の制約が増え、単位時間の処理数も減る傾向があります。この傾向は過去の出題で扱われました。

待ちグラフは、ロックの解放を待つトランザクション間の関係を有向辺で表します。グラフに閉路があれば、デッドロックを検出できます。この検出方法は過去の出題で扱われた補足です。 辺は待つ側からロックを保持する側へ向けます。この向きで関係をたどると、各辺の意味と待ちの連鎖を読み取れます。

多版同時実行制御(MVCC)は、データの複数の版を保持し、読み取り側が適切な版を参照する方式です。過去の出題で扱われた条件では、後発の読み取りは先行トランザクションの未コミット更新を読まず、更新前のコミット済みの値を参照します。

複数のデータベースサイトを一つの処理として確定させる2相コミットでは、まず各サイトに準備可能かを確認し、全サイトが準備できた場合にコミットを指示します。この手順は過去の出題で扱われた補足です。

トランザクション処理の学習範囲には、同時実行制御、障害回復、ACID特性、性能向上、データへのアクセス制御があります。アクセス制御では利用者ごとに権限を設定し、検索、新規登録、更新などの許可を管理します。共通知識のシラバスでは、これらの考え方や権限の定義・変更を扱います。

適用条件と例

隔離性水準の選択では、整合性と同時実行性の両方を考えます。たとえば、複数処理の競合が強く制限される設定では不整合な読み取りを抑えやすくなりますが、待ちが増えて処理数が下がる場合があります。具体的な現象はDBMSの方式や設定に依存するため、傾向と個別仕様を区別します。

ロックの競合を図にするときは、待っている処理から、対象資源のロックを保持する処理へ矢印を引きます。矢印をたどって出発点に戻る閉路があれば、待ちが循環しているためデッドロックと判断できます。閉路がないことは、その時点のグラフにデッドロックがないことを示します。

MVCCの読み取りでどの版が見えるかは、トランザクションの開始時点や分離方式などの条件に関わります。未コミット更新を読まないという説明は、過去の出題で扱われた条件に沿ったものです。すべてのMVCC実装で、どの読取りも同じ可視性になると一般化しないようにします。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む