トランザクション」からの出題です。例題3.192つのクライアント(AとBとします)が同じテーブルTを更新するためにロックを取得しようとしています。以下の記述から正しいものを2つ選択しなさい。クライアントAは行Xを更新するために行ロックを取得した。クライアントBも同じ行Xを更新したいが、行ロックを取得できないのでクライアントAの処理が終わるまで待たされる。クライアントAは行Xを更新するために行ロックを取得した。クライアントBはこれと異なる行Yを更新したいが、YがたまたまXと同じデータブロックにあったので、行ロックは取得できず、クライアントAの処理が終わるまで待たされた。クライアントAはテーブルTの50%の行を更新するために、それらの行のロックを取得したところ、ロックエスカレーションが発生して自動的にテーブルロックに移行した。このためクライアントBは同じテーブルTのどの行も更新できなくなった。EXCLUSIVEモードでのロックを取得した。このロックが解放されるまで、クライアントBはテーブルTを更新できないが、SELECTだけなら実行できる。クライアントAはテーブルTの行Xを更新するためにロックを取得した。T;を実行したが、これはAが取得した行ロックが解放されるまで待たされる。※この例題は実際のOSS-DB技術者認定試験とは異なります。解答と解説データベースでは、複数のクライアントによるデータの同時更新を制御するためロックの機能があります。更新に先立ち、データのロックを取得しますが、ロックが取得できないときはロックが取得できるまで待つことになります(コマンドの種類によってはロック解放を待たずにエラーとして終了します)。通常のUPDATE/DELETE/INSERTによる更新では、行単位でデータがロックされます。データベースの種類によっては、ロックの最小単位がページ単位だったり、あるいは多数の行のロックを取得すると、ロックエスカレーションを起こしてページロックやテーブルロックに移行してしまうものもありますが、PostgreSQLの行ロックには行数制限などはありません。他人がロックしているのと同じ行は更新できませんが別の行であれば更新できます。行ロックとは別に、テーブルロックの機能もあります。EXCLUSIVEモードでのロックでは、他のクライアントからは参照のみのSELECTも含め、一切、アクセスできなくなります。EXCLUSIVEモードでのテーブルロックは取得できません。今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。ご質問・ご意見はこちら※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。アーカイブを試験ごとにまとめています。ご紹介OSS-DB認定教材や教育機関について詳しくご説明いたします。受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。メリット受験対策インタビューFAQ資料請求・お問い合わせプライバシーポリシーこの内容で送信します。よろしいですか?キャンセル。