insert /*+ append */ into一定会比insert into好吗?

本文通过实验对比分析了在Oracle数据库中使用INSERT /*+ APPEND */与普通INSERT的区别。实验结果显示,INSERT /*+ APPEND */通过直接加载(LOAD AS SELECT)方式提高插入速度,但在并发环境下可能导致其他会话无法获取表级锁,而普通INSERT采用LOAD TABLE CONVENTIONAL方式,允许其他会话进行读写操作。在追求性能的同时,需要权衡其对并发的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在速度上面大家都清楚直接加载插入数据确实比insert into快多了,但是如果在业务很麻烦的表这样做,估计会付出很大的性能甚至夯机的代价,
也许开发追求快,但是作为DB,要考虑在性能的基础上来追求卓越的速度

SQL> explain plan for insert /*+ append */ into t_app select * from t_app;
Explained.
SQL> select * from  table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3648959745
----------------------------------------------------------------------------
| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | INSERT STATEMENT   |       | 23616 |  3643K|    99   (2)| 00:00:02 |
|   1 |  LOAD AS SELECT    | T_APP |       |       |            |          |===>直接加载的对表的操作是LOAD AS SELECT
|   2 |   TABLE ACCESS FULL| T_APP | 23616 |  3643K|    99   (2)| 00:00:02 |
----------------------------------------------------------------------------

SQL> explain plan for insert into t_noapp select * from t_noapp;
Explained.
SQL> select * from  table(dbms_xplan.display());
Plan hash value: 3980433360
------------------------------------------------------------------------------------
| Id  | Operation                | Name   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值