zoukankan      html  css  js  c++  java
  • oracle逻辑读取 天高地厚

      逻辑读取是从数据库高速缓冲区中读取数据块,按照读取数据块的模式不同,一般来说,逻辑读取可以分为即时读取(Current Read)和一致性读取(Consistent Read)。这两者最大的区别在于数据的新旧之分,分别说明如下。

      即时读取:在Oracle的数据库高速缓冲区内,任何时候都只会保留一份目前的数据;所谓的即时读取,就是读取目前最新的数据,且通常发生在对数据进行修改与删除作业时。

      一致性读取:相信大家都了解,Oracle是一个多用户的数据库系统,所以会发生当A用户开始会话,读取的数据还未读取完成之前,可能会有B用户会话修改A用户正在读取但尚未读取完的数据,这时,如果A用户会话读取到B用户会话修改后的数据,就会造成数据不一致的情况,这是相当严重的问题,而一致性读取就是为了保证数据的一致性。为此,在数据库高速缓冲区中的数据块上,都会有最后一次修改数据块时的SCN(System Change Number,系统修改号码)。如果一个事务(Transaction)需要修改数据块中的数据,会先在撤消段(Undo Segment,或称为Rollback Segment)中保存一份修改前数据和SCN的数据块,然后再更新数据库高速缓冲区中、数据块内的相关数据与其SCN,并标识其为脏(Dirty)数据。当其他用户会话读取数据块时,会先比较数据块上的SCN和自己的SCN,当数据块上的SCN小于等于本身的SCN时,则直接读取数据块上的数据;如果是大于本身的SCN,则会从撤消段中找出修改前的数据块并读取其数据。

    不登高山,怎知天高;不临深溪,焉知地厚!站在坚实的土地上,做着生命中最真实的事情;像一棵挺拔的大树,认可自己的命运并敢于迎接属于这一方天空的风风雨雨。

  • 相关阅读:
    题解 UVA10213 【How Many Pieces of Land ?】
    NOIP 2018 游记
    POJ 1821 Fence(单调队列优化DP)
    HDU 2196 Computer(经典树形DP)
    POJ 2228 Naptime(DP+环形处理)
    POJ 1742 Coins(多重背包?)
    POJ 2311 Cutting Game(SG函数)
    BZOJ 2560(子集DP+容斥原理)
    HDU2841 Visible Trees(容斥原理)
    HDU 1796 How many integers can you find(容斥原理)
  • 原文地址:https://www.cnblogs.com/net2012/p/2872657.html
Copyright © 2011-2022 走看看