linux oracle 网络安全 编程
分类: Oracle
2013-01-27 22:24:43
首先先说明一下oracle体系结构里面会出现缓存的地方:
1、oracle缓存(包括PGA/SGA);
2、OS缓存(其实这个一直都有点歧义,我个人感觉应该是说文件系统的缓存,所以说如果是裸设备的话就会没有OS缓存这个说法);
3、存储缓存;
4、硬盘缓存;
5、cpu一二级缓存。
oracle体系结构里面涉及的缓存从形式上有两种:读缓存、写缓存。
读缓存:就是主要拿来读取作用,它一般会出现在什么地方? 1、oracle的SGA里面; 2、OS缓存; 3、存储缓存; 4、硬盘缓存; 5、额外还说一下cpu的一二级的缓存理应也会出现。
写缓存:可以在缓存里面将块直接修改,它一般出现在什么地方呢?意外说一点,它是在可以出现写缓存的地方将数据写在满了相应的buffers再照触发条件后write到DBF里面(这个即可减少I/O的大量产生,也可以到时候减少读的时候寻道时间,因为他们都是写在连续的块上面)。
1、oracle的SGA里面(其实这个是oracle的优势地方,它写操作可以直接在SGA里面发生,而不用直接在存储里面而导致并发大量的I/O),这点我也有点不明白,其实一般我们在一般的操作系统上修改文件的时候理应也是把数据读到内存里面修改,完了再放回硬盘的啊也不会发生大量I/O啊为什么会说oracle有优势有这样说法呢?
2、存储缓存,存储有独立缓存而且有独立的电池供应。
一般读流程: CPU------一二级缓存(如有)-----SGA-----OS(如有)------存储coache-----硬盘coache------存储物理
一般写写流程: CPU-----SGA-----存储coache-----存储物理