【正确答案】直接路径访问是绕过SGA,直接把数据读入到PGA中,这个过程数据不经过SGA的缓冲,所以在理论上性能更快。在PGA中的数据只能由当前会话进程访问,当其他会话需要访问这部分数据时需要从磁盘读取数据,会发生物理读。若多个会话同时需要相同的数据,则会导致系统物理读增大,从而影响了数据库的性能。
保存数据的方法分为常规路径加载和直接路径加载:
(1)常规路径加载 执行INSERT语句来填充数据库中的表。直接路径加载会格式化Oracle数据块,并将数据块直接写入数据库文件,从而可消除大量数据库开销。直接加载不与其他用户竞争数据库资源,因此通常可以用接近磁盘速度的速度加载数据。常规路径加载使用SQL处理和数据库COMMIT操作来保存数据。插入记录数组后会执行COMMIT操作。每次数据加载可能涉及多个事务处理。
(2)直接路径加载 使用数据保存将数据块写入Oracle数据文件。这就是为什么直接路径加载比常规路径加载快很多的原因。数据保存与COMMIT的区别在于:
1)在数据保存期间,仅将整个数据库块写入数据库中。这些块是在表的高水位标记(HWM)之后写入的。
2)完成数据保存后,HWM会移动。
3)完成数据保存后不会释放内部资源。
4)完成数据保存不会结束事务处理。
5)每次执行数据保存时不会更新索引。
就DML活动方面而言,直接路径加载与并行直接路径加载非常相似。常规路径加载和直接路径加载的区别见表。
【答案解析】