PREPARATION
受験対策

Silverの例題解説「開発/SQL - トランザクションの概念(トランザクション分離レベル)」

今回は、Silverの「開発/SQL - トランザクションの概念(トランザクション分離レベル)」からの出題です。

例題

3.90

反復不能読み取り(nonrepeatable read)の説明として適切なものを2つ選びなさい。

  1. 他のトランザクションがまだコミットしていないデータを読み取る。

  2. 同じ問い合わせを繰り返し実行したときに、返される行の数が前と異なる。

  3. 同じデータを繰り返し読んだときに、データの内容が前と異なる。

  4. トランザクション分離レベルをシリアライザブル(serializable)にしたら発生しない。

  5. トランザクション分離レベルをリードコミッティド(read committed)にしたら発生しない。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2018年8月28日

解答と解説

SQLで定義されるトランザクション分離レベルは、制限が緩いものから順にリードアンコミッティド(read uncommitted)、リードコミッティド、リピータブルリード(repeatable read)、シリアライザブルの4種類があります。PostgreSQLはそのいずれにも設定できますが、リードアンコミッティドに設定しても、リードコミッティドと同じ動作になります。
各レベルで禁止される事象の内容が異なります。
リードコミッティドではダーティーリード(選択肢A)が禁止されます。
リピータブルリードでは反復不能読み取り(選択肢C)が禁止されます。またファントムリード(選択肢B)は標準SQLのリピータブルリードでは許容されますが、PostgreSQLのリピータブルリードでは発生しません。
シリアライザブルではこれら3つの事象に加えて、直列化異常も禁止され、同時実行される複数のトランザクションがどの順番でコミットされても同じ結果になることが保証されます。

従って正解はCとDです。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors