暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,什么是直接路径访问?

DB宝 2017-09-14
989


Q
题目如下所示:

在Oracle中,什么是直接路径访问?


     

A
答案如下所示:



答案:直接路径访问是绕过SGA,直接把数据读入到PGA中,这个过程数据不经过SGA的缓冲,所以在理论上性能更快。在PGA中的数据只能由当前会话进程访问,当其它会话需要访问这部分数据时需要从磁盘读取数据,会发生物理读。若多个会话同时需要相同的数据,则会导致系统物理读增大,从而影响了数据库的性能。

保存数据的方法分为常规路径加载和直接路径加载:

(1)常规路径加载:执行INSERT语句来填充数据库中的表。直接路径加载会格式化Oracle数据块,并将数据块直接写入数据库文件,从而可消除大量数据库开销。直接加载不与其他用户竞争数据库资源,因此通常可以用接近磁盘速度的速度加载数据。常规路径加载使用SQL处理和数据库COMMIT操作来保存数据。插入记录数组后会执行COMMIT操作。每次数据加载可能涉及多个事务处理。

(2)直接路径加载:使用数据保存将数据块写入Oracle数据文件。这就是为什么直接路径加载比常规路径加载快很多的原因。数据保存与COMMIT的区别在于:

在数据保存期间,仅将整个数据库块写入数据库中。这些块是在表的高水位标记(HWM)之后写入的。

完成数据保存后,HWM会移动。

完成数据保存后不会释放内部资源。

完成数据保存不会结束事务处理。

每次执行数据保存时不会更新索引。

DML活动方面而言,直接路径加载与并行直接路径加载非常相似。常规路径加载和直接路径加载的区别如下表所示:


常规加载

直接路径加载

提交

使用COMMIT提交。

使用数据保存(操作速度更快)

事件记录更改(Redo

常规路径加载可生成与任何DML语句相似的重做条目。使用直接路径加载时,如果存在以下条件,那么不会生成重做项:

1.数据库处于NOARCHIVELOG模式

2.数据库处于ARCHIVELOG模式,但是禁用了事件记录(通过为表设置NOLOGGING属性或者在控制文件中使用UNRECOVERABLE子句,可以禁用事件记录)

只在特定条件下生成Redo

强制约束条件

在常规路径加载过程中,所有启用的约束条件都按照在执行DML操作过程中所采用的方式强制执行。

只强制PRIMARY KEYUNIQUENOT NULL。在直接路径加载过程中,按以下方式处理约束条件:

1.构建数组时检查NOT NULL约束条件。

2.FOREIGN KEYCHECK约束条件处于禁用状态,加载结束时可使用控制文件中的相应命令启用这两个约束条件。FOREIGN KEY约束条件因引用了其它行或表而被禁用;CHECK约束条件因可能使用了SQL函数而被禁用。如果只在大型表中插入少量的行,那么使用常规加载。

3.加载期间及加载结束时会检查PRIMARY KEYUNIQUE约束条件;如果违反这两个约束条件,那么就会禁用它们。

触发INSERT触发器

触发INSERT触发器。在常规加载过程中会触发WHILE INSERT触发器;这些触发器在进行直接路径加载之前已禁用,在加载结束时会重新启用。如果运行结束时,不能访问某个被引用对象,这些触发器可能会保持为禁用状态。可以考虑使用常规路径加载将数据加载到带有INSERT触发器的表中。

不触发INSERT触发器。

锁定

可加载到聚簇表中。不能使用直接加载将行加载到聚簇表中。只可使用常规路径加载来加载聚簇表。

不加载到集群中

修改表

允许其他用户在加载操作过程中修改表。直接路径加载正在进行时,其它事务处理不能更改正在加载的表。此规则的唯一例外情况发生在同时使用多个并行直接加载会话时。

阻止其他用户在加载操作过程中更改表

索引

在每次插入时维护索引条目

在加载结束时合并新的索引条目

 


DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:230161599

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。


最后修改时间:2020-01-10 20:56:59
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论