在这种方法中,主要有两种途径来实现对 I/O 的优化。
 
Oracle 
使用内存缓存来减少 I/O
通过一些内存缓存,如 Buffer Cache、Log Buffer、Sort Area,可以降低数据库对 I/O 的请求。当 Buffer Cache被增大到一定大小时,绝大多数结果可以直接从缓存中获取到,而无需从磁盘上读取了。而在进行排序操作时,如果 Sort Area 足够大,排序过程中产生的临时数据可以直接放在内存中,而无需占用临时表空间了。
 
 
调整 multiblock I/O(多数据块 I/O)的大小
控制 Mult iblock I/O 的参数叫 DB_FILE_MULTIBLOCK_READ_CO UNT,它控制在多数据块读时一次读入数据块的数量。适当增加这个参数大小,能够提高多数据块操作(如全表扫描)的 I/O 效率。
 
例如,读取100M 数据,如果每次读取 1M 一共读取 100 次的效率就比每次读取 100K 一共读取 1000 次更快。但是这个数字达到一定大小后,再增加就作用不大了:每次 10M 一共读 100 次来读取 1G 的数据的效率和单独一次读取 1G 数据的效率是没有多大区别的。这是因为 I/O 效率受到 2 个因素的影响:I/O 建立时间和 I/O 传输时间。 
 
I/O 建立时间对于不同 I/O 大小来说都是相同的,它决定了对小 I/O 的总的 I/O 时间,增大 Mult iblock I/O大小可以减少 I/O 建立时间;
I/O 传输时间与 I/O 大小是成正比的,在小 I/O 时,I/O 传输时间一般比 I/O 建立时间少,但对于大 I/O操作来说,I/O 传输时间决定了总的 I/O 时间。因此 Multiblock I/O 大小增大到一定大小时,它对总的I/O 时间影响就不大了。