用直接路径(direct-path)insert提升性能的两种方法

本文详细介绍了直接路径(direct-path)insert的两种提升性能的方法,包括使用/*+ APPEND */ hint和DML并行模式。通过避免buffer_cache,直接写入磁盘,减少redo与undo的写入,direct-path insert在特定情况下能显著提高插入速度。同时,文章也强调了在不同数据库和表模式下使用direct-path insert需要注意的要点,以及如何通过设置来优化性能。
摘要由CSDN通过智能技术生成

1、传统串行insert方式

    常见的insert方式有两种:

(1)      insert into table_name values(....)

(2)      insert into target_table select* from source_table

    上面这两种常规的插入式,默认都是在串行方式下的插入,会将insert的数据写入buffer_cache,插入前检查表中是否有block中存有空闲空间可以追加插入,并写入redo log。

2、直接路径(direct-path)insert优点与使用要点

2.1、Direct-path insert 方式的优点

(1)      可以将insert数据跳过buffer_cahce,省掉了buffer block的格式化与DBWR操作,直接从PGA写入磁盘

(2)      不检查表中现有的block是否有空闲空间,直接在表的高水位线(HWM)以上插入

(3)      如果在数据库处于非归档模式下,或者是数据就处于归档模式,表级处于nologging状态下,只有少量的空间信息redo写入、不写入数据undo(因为要回滚时可以直接回退到高水线即可,而不需要针对insert生成delete的回滚记录),所以在特定的情况下,直接路径(direct-path)的insert方式,在性能上远远快于常规的串行插入方式。

2.2、使用direct-path insert需要特别注意的要点

2.2.1 DB非force loggging模式下direct-path insert对redo与undo的写入影响

      如果在数据库处于归档模式,以及表处于logging模式下,直接路径(direct-path)性能提升会大打折扣,因为,虽然direct-path能生效,但是仍然会记录下完整的redo和undo。

      也就是说,在归档模式下,还需要将表改成nologging模式,才不会写数据的redo。

2.2.2 DB force logging模式下direct-pathinsert对redo的写入影响

Note: If the database or tablespace is in FORCE LOGGING mode, then

direct-path INSERT always logs, regardless of the logging setting.

      如果数据库或表空间在forcelogging模式,则direct-path insert总是会写日志,无论logging如何设置。

3、使用直接路径(direct-path)insert的方法

3.1 方法一:使用/*+ APPEND */ hint方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT圈黎俊杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值