1:insert into /* append */ tables() select * from table_o ;
使用append提示进行insert叫做直接路径加载插入,使用这种提示因为系统不去查找freelist链表中的空闲块,直接在高水标记位以上插入数据,因此速度比较快。但是也应该注意直接路径加载插入有一些不同:
它不记录日志,因此一旦插入的数据在没有保存回磁盘的时候发生掉电之类的状况插入的数据不能重做。在Oracle Database 10g Enterprise Edition Release 10.2.0.1.0中,如果插入操作的语法是
insert into XXX values(XXX);
那么系统加的是row exclusive锁,也就是正常insert所加的行级锁,但是如果插入操作的语法是
insert into XXX select XXX from XXX;
那么系统加的是exclusive锁,相当于表级锁,
在Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 中就简单一些了,不管是哪种语法,一概加的是exclusive锁!
本文深入探讨了Oracle数据库中直接路径加载插入(append提示)的机制,包括其速度优势、日志记录缺失可能导致的问题,以及不同语法引起的锁类型变化。详细对比了OracleDatabase10g和11g版本中的直接路径加载插入行为。
183

被折叠的 条评论
为什么被折叠?



