最近在学习oracle体系结构
在学到 Flush Buffer的时候里面解释到回顾一下前面一个用户进程访问一个数据块的过程,如果访问的数据块不在buffer cache中,就需要扫描LRU链表,当达到扫描块数限制后还没有找到空闲buffer,就需要通知DBW0将脏缓存回写到磁盘。如果一个系统中存在大量的脏缓冲,那么就可能导致用户进程访问数据性能下降。我们可以通过人工干预将所有脏缓冲回写到磁盘去,这就是flush buffer。在9i,可以用以下语句:alter system set events = 'immediate trace name flush_cache'; --9i在10g,可以用以下方式(9i的方式在10g仍然有效):alter system flush buffer_cache; -- 10g
我之前也看了 脏数据缓存即被进程修改过,但还没有被回写到数据文件中去的数据块,此时缓冲中的数据和数据文件中的数据不一致我在一直以为commit后数据在缓存就消失了 直接提交给表里保存了
是不是我这个思路是错误的
而没commit前的数据 就一直驻留在缓存中就是请高手和我解释下 脏数据缓存到底是怎么样的