oracle的大量数据insert操作怎么提高效率?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的大量数据insert操作怎么提高效率?相关的知识,希望对你有一定的参考价值。

参考技术A 1、使用hint提示:/*+append*/,减少redo的生成\\x0d\\x0a2、临时disable掉表上的索引,约束,触发器等\\x0d\\x0a3、系统压力不大多cpu情况下,可以考虑开并发\\x0d\\x0a4、可以考虑单独建一个回滚段给这个事务使用

oracle 索引监控

? ? ? ?索引对于在大量数据里检索出少量数据库的查询操作来说是高效的,可是对于DML操作来说。却是负面的:①其对于insert 操作的反面影响最大。该表的索引越多,更新的索引越多,insert 操作越慢。②对于delete来说。大量数据定位删除少量数据的时候。通过索引定位删除是高效的,但假设删除数据量过多,或者有过多列有索引的时候。其它索引列由于数据的删除有会更新来说,索引是负面的。③对于update的负面影响最小,详细改动某一列时仅仅会更新该列上的index。



? ? ? ?所以说,没有被使用过的index在数据库中一定是低效,具有负面影响的,我们通过对索引的监控来查看索引是否在监控的时间段内被使用过。

索引监控:
alter index index_name monitoring usage;
查看是否在開始监控后被使用过:
select * from v$object_usage;
停止索引监控:
alter index index_name nomonitoring usage;

以下通过实验看一下:
SQL> create table t_id as select rownum id from dual connect by level<10000;
?
Table created
?
SQL> create index ind_t_id on t_id(id);
?
Index created
?
SQL> alter index ind_t_id monitoring usage;
?
Index altered
?
SQL> select * from v$object_usage where index_name=‘IND_T_ID‘;
?
INDEX_NAME ? ? ? ? ? ? ? ? ? ? TABLE_NAME ? ? ? ? ? ? ? ? ? ? MONITORING USED START_MONITORING ? ?END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IND_T_ID ? ? ? ? ? ? ? ? ? ? ? T_ID ? ? ? ? ? ? ? ? ? ? ? ? ? YES ? ? ? ?NO ? 04/24/2014 13:27:39?
?
SQL> select * from t_id where id=999;
?
? ? ? ? ID
----------
? ? ? ?999
?
SQL> select * from v$object_usage where index_name=‘IND_T_ID‘;
?
INDEX_NAME ? ? ? ? ? ? ? ? ? ? TABLE_NAME ? ? ? ? ? ? ? ? ? ? MONITORING USED START_MONITORING ? ?END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IND_T_ID ? ? ? ? ? ? ? ? ? ? ? T_ID ? ? ? ? ? ? ? ? ? ? ? ? ? YES ? ? ? ?YES ?04/24/2014 13:27:39?

SQL> alter index ind_t_id nomonitoring usage;
?
Index altered
?
SQL> select * from v$object_usage where index_name=‘IND_T_ID‘;
?
INDEX_NAME ? ? ? ? ? ? ? ? ? ? TABLE_NAME ? ? ? ? ? ? ? ? ? ? MONITORING USED START_MONITORING ? ?END_MONITORING
------------------------------ ------------------------------ ---------- ---- ------------------- -------------------
IND_T_ID ? ? ? ? ? ? ? ? ? ? ? T_ID ? ? ? ? ? ? ? ? ? ? ? ? ? NO ? ? ? ? YES ?04/24/2014 13:27:39 04/24/2014 13:29:13

以上是关于oracle的大量数据insert操作怎么提高效率?的主要内容,如果未能解决你的问题,请参考以下文章

ORACle中对于数据量庞大的表如何用delete+insert来代替update语句操作步骤或者请举例说明

往数据库里添加数据,update和insert哪个效率高

oracleinsert怎么快速对应select

Oracle大量数据查询优化

mysql 百万级的表怎么处理

oracle数据库中nvl可以用于insert语句中吗?