网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle数据库体系结构.
.案例学习Oracle错误:ORA-00054.
.讲解Oracle数据库提供的多种安全.
.Oracle8i LONG数据类型使用上的一.
.INTELP4安装ORACLE8I的具体解决方.
.手动制作Oracle9i/10g客户端的实.
.ORACLE 回滚段表空间数据文件丢失.
.在Solaris 10 X86上安装Oracle 1.
.[Oracle]发布数据库内容管理的新.
.如何处理Oracle中TEMP表空间满的.
.Oracle数据库自动启动失灵.
.Oracle 8i特性.
.如何捕获问题SQL解决过度CPU消耗.
.Oracle PL/SQL入门之案例实践.
.利用Oracle执行计划机制提高查询.
.Oracle SQL的优化(3).
.Oracle Package返回游标和Java调.
.甲骨文助陕西重型汽车驶入信息化.
.Oracle如何处理身份管理.
.关于VB与Oracle数据库中的日期转.

如何更快地批量数据处理?

发表日期:2008-2-9


     在批量处理数据时,比如从上亿条记录的表中删除上1000万条数据,不仅要考虑对undo的影响,还要考虑对redo,对磁盘i/o,锁、阻塞等的影响,在某种意思上讲,同样的任务,执行的sql次越少,总的消耗的时间就越少……
如何更快地批量数据处理? create table tmp_object1 as select * from dba_objects; 如何更快地批量数据处理?create index idx_object1_name on tmp_object1(object_name); 如何更快地批量数据处理?create table tmp_object2 as select * from dba_objects; 如何更快地批量数据处理? 如何更快地批量数据处理?alter session set events '10046 trace name context forever, level 12'; 如何更快地批量数据处理? 如何更快地批量数据处理?declare 如何更快地批量数据处理?cursor cur_obj1 is select object_name from tmp_object1; 如何更快地批量数据处理? 如何更快地批量数据处理?type v_array is table of tmp_object1.object_name%type; 如何更快地批量数据处理?v_obj1 v_array; 如何更快地批量数据处理?begin 如何更快地批量数据处理?open cur_obj1; 如何更快地批量数据处理?loop 如何更快地批量数据处理?fetch cur_obj1 bulk collect into v_obj1 limit 10000; 如何更快地批量数据处理? 如何更快地批量数据处理?forall i in 1..v_obj1.count 如何更快地批量数据处理?delete from tmp_object1 where object_name = v_obj1(i); 如何更快地批量数据处理?commit; 如何更快地批量数据处理? 如何更快地批量数据处理?exit when cur_obj1%notfound; 如何更快地批量数据处理?end loop; 如何更快地批量数据处理?close cur_obj1; 如何更快地批量数据处理?end; 如何更快地批量数据处理?/ 如何更快地批量数据处理?alter session set events '10046 trace name context off'; 如何更快地批量数据处理? 如何更快地批量数据处理?OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS 如何更快地批量数据处理?call count cpu elapsed disk query current rows 如何更快地批量数据处理?------- ------ -------- ---------- ---------- ---------- ---------- ------- 如何更快地批量数据处理?Parse 16 0.00 0.00 0 2 0 0 如何更快地批量数据处理?Execute 26 9.23 9.03 254 52778 121592 51712 如何更快地批量数据处理?Fetch 39 0.07 0.07 1 1363 0 51735 如何更快地批量数据处理?------- ------ -------- ---------- ---------- ---------- ---------- ------- 如何更快地批量数据处理?total 81 9.31 9.11 255 54143 121592 103447 如何更快地批量数据处理? 如何更快地批量数据处理?Misses in library cache during parse: 5 如何更快地批量数据处理?Misses in library cache during execute: 4 如何更快地批量数据处理? 如何更快地批量数据处理?Elapsed times include waiting on following events: 如何更快地批量数据处理?Event waited on Times Max. Wait Total Waited 如何更快地批量数据处理?---------------------------------------- Waited ---------- ---------- 如何更快地批量数据处理?db file sequential read 254 0.00 0.00 如何更快地批量数据处理? 如何更快地批量数据处理?alter session set events '10046 trace name context forever, level 12'; 如何更快地批量数据处理? 如何更快地批量数据处理?declare 如何更快地批量数据处理?v_cnt number; 如何更快地批量数据处理?begin 如何更快地批量数据处理?select count(*) into v_cnt 如何更快地批量数据处理?from tmp_object2; 如何更快地批量数据处理? 如何更快地批量数据处理?v_cnt := floor(v_cnt/10000) + 1; 如何更快地批量数据处理?for i in 1..v_cnt loop 如何更快地批量数据处理?delete from tmp_object2 where rownum <= 10000; 如何更快地批量数据处理?commit; 如何更快地批量数据处理?end loop; 如何更快地批量数据处理?end; 如何更快地批量数据处理?/ 如何更快地批量数据处理?alter session set events '10046 trace name context off'; 如何更快地批量数据处理? 如何更快地批量数据处理?OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS 如何更快地批量数据处理?call count cpu elapsed disk query current rows 如何更快地批量数据处理?------- ------ -------- ---------- ---------- ---------- ---------- ------- 如何更快地批量数据处理?Parse 14 0.00 0.00 0 2 0 0 如何更快地批量数据处理?Execute 24 1.15 1.70 0 2785 57665 51712 如何更快地批量数据处理?Fetch 31 0.04 0.04 712 865 0 22 如何更快地批量数据处理?------- ------ -------- ---------- ---------- ---------- ---------- ------- 如何更快地批量数据处理?total 69 1.20 1.75 712 3652 57665 51734 如何更快地批量数据处理? 如何更快地批量数据处理?Misses in library cache during parse: 3 如何更快地批量数据处理?Misses in library cache during execute: 1 如何更快地批量数据处理? 如何更快地批量数据处理?Elapsed times include waiting on following events: 如何更快地批量数据处理?Event waited on Times Max. Wait Total Waited 如何更快地批量数据处理?---------------------------------------- Waited ---------- ---------- 如何更快地批量数据处理?db file sequential read 17 0.00 0.00 如何更快地批量数据处理?db file scattered read 67 0.00 0.01 如何更快地批量数据处理?log file switch completion 3 0.02 0.04 如何更快地批量数据处理?log buffer space 1 0.11 0.11
  说明:在上面的前半部分示例代码中,若把object_name = v_obj(i)改成rowid = v_obj(i),删除数据时用rowid,而不是通过索引扫描,性能当然会略有提升,但总体来讲,比后半部分的代码,性能上还是大大不如……
上一篇:数据库调优:如何优化in操作 人气:936
下一篇:如何在存储过程中拥有role的权限 人气:1043
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐