Direct insert这一用法有其速度快的优点,但也有其缺点,必须注意适用场合。大家想一下,为什么oracle不默认用append呢?
这里总结一下,direct-load insert(及append,direct方式sqlldr等)适合于:
1)大量记录的insert时使用会提升速度,因为绕过databuffer直接访问数据文件,且不用扫描原有block上哪些有剩余空间,而直接分配新空间
2)单个进程,通常是数据维护时,或者临时倒数据等
这两种情况下,使用direct-load insert不仅速度快,还减少了数据库data buffer的使用,对数据库上的其他应用产生的影响也较小。
不适合:
1)少量记录insert。因为每次insert /*+append */后会进行索引维护,少量记录insert使用append反而慢。
2)多用户,OLTP环境。因为append会产生表级锁。OLTP系统除了一些批处理操作,大多数应用都不应该使用append。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18474/viewspace-1060738/ ,如需转载,请注明出处,否则将追究法律责任。