forall_for loop效能對比測試_plsql
SQL> show user
USER is "SCOTT"
SQL> create table blktest(num number(20),name varchar2(50));
Table created.
set time on timing on
create or replace procedure p_compare
is
type numtab is table of blktest.num%type index by binary_integer;
type nametab is table of blktest.name%type index by binary_integer;
r_num numtab;
r_name nametab;
t1 number;
t2 number;
t3 number;
begin
for i in 1..1000000 loop
r_num(i):=i;
r_name(i):='rec no '||to_char(i);
end loop;
select dbms_utility.get_time into t1 from dual;
for i in 1..1000000 loop
insert into blktest values(r_num(i),r_name(i));
if mod(i,10000)=0 then
commit;
end if;
end loop;
select dbms_utility.get_time into t2 from dual;
forall i in 1..1000000
insert into blktest values(r_num(i),r_name(i));
commit;
select dbms_utility.get_time into t3 from dual;
dbms_output.put_line('execution time(hsecs)');
dbms_output.put_line('for loop:'||to_char(t2 - t1));
dbms_output.put_line('forall:'||to_char(t3 -t2));
end;
/
Procedure created.
Elapsed: 00:00:00.48
22:49:36 SQL>
22:49:47 SQL>
22:49:47 SQL> set serveroutput on
22:49:53 SQL> exec p_compare;
execution time(hsecs)
for loop:6437
forall:7675
PL/SQL procedure successfully completed.
### tail -f alert_orcl.log 日誌頻繁出現如下塗紅資訊
Sat Aug 7 11:22:50 2010
Thread 1 cannot allocate new log, sequence 16
Checkpoint not complete
Current log# 2 seq# 15 mem# 0: /oracle/oradata/orcl/redo02.log
Thread 1 advanced to log sequence 16
Current log# 3 seq# 16 mem# 0: /oracle/oradata/orcl/redo03.log
Sat Aug 7 11:27:04 2010
Thread 1 cannot allocate new log, sequence 17
Checkpoint not complete
Current log# 3 seq# 16 mem# 0: /oracle/oradata/orcl/redo03.log
Thread 1 advanced to log sequence 17
Current log# 1 seq# 17 mem# 0: /oracle/oradata/orcl/redo01.log
Sat Aug 7 11:27:17 2010
Thread 1 cannot allocate new log, sequence 18
Checkpoint not complete
Current log# 1 seq# 17 mem# 0: /oracle/oradata/orcl/redo01.log
Thread 1 advanced to log sequence 18
Current log# 2 seq# 18 mem# 0: /oracle/oradata/orcl/redo02.log
Sat Aug 7 11:27:46 2010
ORACLE Instance orcl - Can not allocate log, archival required
Sat Aug 7 11:27:46 2010
Thread 1 cannot allocate new log, sequence 19
All online logs needed archiving
解決方法:
1.增大redo log的大小
2.增加redo log group的數目.
3.加快dbwr寫資料檔案速度.
我把log日誌檔案大小加大到200m,這下日誌switch切得慢了,沒有以上提示了
不過效能測試還是forall與for loop沒有明顯的區別
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-670478/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nginx 和 Gunicorn 效能對比測試Nginx
- MySQL效能基準測試對比:5.7 VS 8.0MySql
- c# sqlsugar,hisql,freesql orm框架全方位效能測試對比 sqlserver 效能測試C#SqlSugarORM框架Server
- plsql_迴圈結構_do while_do unitl_while loop_end loop測試(一)SQLWhileOOP
- sqlsugar freesql hisql 三個ORM框架效能測試對比SqlSugarORM框架
- TDengine 和 InfluxDB 查詢效能對比測試報告UX測試報告
- Win10神秘加成? 磁碟讀寫效能對比測試Win10
- CYQ.Data 操作 Redis 效能測試:對比 StackExchange.RedisRedis
- 閘道器服務:zuul與nginx的效能測試對比ZuulNginx
- 通用MPU效能測試對比 RZ/G2L核心板
- Lua、Luajit、Python、Node.js和Java效能測試對比PythonNode.jsJava
- 由國產效能測試工具WEB壓力測試模擬能力對比讓我想到的Web
- 效能測試常用工具對比:Jmeter與LoadRunner的異同JMeter
- PostgreSQL TPROC-C基準測試:PostgreSQL 12與PostgreSQL 13效能對比SQL
- 敏捷測試VS傳統測試對比,6招玩轉敏捷測試!敏捷測試
- PyPy 和 CPython 的效能比較測試Python
- CYQ.Data 操作 Json 效能測試:對比 Newtonsoft.JsonJSON
- 4款主流PHP框架效能對比評測PHP框架
- oracle plsql儲存過程_while loop_end loop_exitOracleSQL儲存過程WhileOOP
- AMD速龍200GE處理器效能對比測試評測:Intel奔騰對手駕到!Intel
- 對比測試工具平臺讓財務測試飛起來
- Apache Prefork和Worker模式的效能比較測試Apache模式
- 5個效能測試工具哪個更好用?對比結果新鮮出爐!
- 差異巨大 6款通用工業級ARM處理器效能測試對比
- 【效能測試】使用ab做Http效能測試HTTP
- hive表連線和oracle測試對比HiveOracle
- SpringBoot2 整合測試元件,七種測試手段對比Spring Boot元件
- 效能測試:分散式測試分散式
- Jmeter介面測試+效能測試JMeter
- 集合差異比較演算法及效能測試演算法
- 資料庫執行效率的對比測試資料庫
- 紅米3S與紅米3效能對比評測
- 微服務測試之效能測試微服務
- 效能測試之測試指標指標
- 測試開發之效能篇-效能測試設計
- Jmeter效能測試:高併發分散式效能測試JMeter分散式
- 效能測試——效能測試-常見效能指標-總體概況指標
- Redis 效能測試Redis