sql >> データベース >  >> RDS >> Oracle

Oracle SQLで、削除された(コミットされていない)行が現在のセッションでは表示されないのに、他のセッションでは表示されるのはなぜですか?

    ziesemer の対象となるACIDプロパティの説明 紹介しました。マルチバージョン同時実行制御 について知っておく必要があります。 またはMVCC。 「すべてについて」知りたい場合は、同時実行制御を読むことを検討してください。データベースシステムの回復と回復 Philip A. Bernstein、Vassos Hadzilacos、Nathan Goodman(ダウンロード可能)。

    Oracleおよび他の同様のMVCCDBMSでは、トランザクションを開始すると、その開始時刻を識別するタイムスタンプのメモが保持されます(ただし、タイムスタンプ値は必ずしもUnixエポック値からの単純な「秒」ではありません)。そのトランザクションの実行中は、開始時刻の後にタイムスタンプが挿入されたデータは表示されません。システムは、まだ実行中のトランザクションで使用可能なデータページの以前のバージョンを保持します。トランザクションがページを書き込むと、新しいタイムスタンプで新しいコピーが作成されますが、そのコピーは、変更トランザクションがコミットするまで他のトランザクションで使用できません。それでも、コミット後に開始するトランザクションでのみ使用できます。



    1. SQLを学ぶべき10の理由

    2. 基本クラスと派生オブジェクトのバリアント

    3. テーブルからn個の最大値を選択します

    4. mysqlは特定の文字をチョークし、mssqlはチョークしません