トップ > SQL入門 > 26章
26章 読み取り一貫性
今回は読み取り一貫性について学んでいきましょう。

読み取り一貫性とはあるユーザが変更中のデータ(まだCOMMITされていないデータ)を
別のユーザがデータ取得した場合は、変更前のデータを表示する機能です。

読み取り一貫性
未確定のデータをSELECTするとき、変更前のデータを取得

読み取り一貫性

変更されたら変更中のデータを表示するのが普通ではないかと
疑問に思う方もいるでしょう。

理由は変更中のデータはまだ確定したデータではないからです。
以前もお伝えしましたが、トランザクション内の変更は
最後にCOMMITかROLLBACKを発行しデータの確定もしくは
取り消しを行う必要があります。

まだ確定していない変更中のデータを見れてしまい、
その後ROLLBACKが実行されたら、取得したデータは
偽りのデータとなってしまいます。
未確定なデータを見せないというのがOracleの考え方です。

この未確定なデータを見せるかどうかは「トランザクション分離レベル」と
言われており、データベースでは重要な話となります。
このトランザクション分離レベルは、データベース管理システムで動作が異なります。

では、読み取り一貫性についてご紹介しましたが、
以下のような場合にも読み取り一貫性は使用されます。

SELECT文 10:00-11:00
UPDATE文 → COMMIT 10:05

読み取り一貫性

上記はSELECT文が10時に実行されて終了するまで60分所要する場合に、
SELECT最中にデータが変更され、コミットされた場合も、
COMMIT後ではなく、SELECT文実行時の10時の時点のデータが取得されます。

これも読み取り一貫性の機能であり、変更前のデータを参照します。

この変更前のデータはUNDOデータを使用しています。この内容は管理コースでご紹介していきます。

本章は以上となります。今回は読み取り一貫性についてご紹介してきました。