eygle.com   eygle.com
eygle.com  
 

« November 12, 2005 | Blog首页 | November 14, 2005 »



November 13, 2005

批量绑定(bulk binds):FOR循环与FORALL的性能比较

作者:eygle

出处:http://blog.eygle.com

通常在SQL语句中给PL/SQL变量赋值叫做绑定(Binding),一次绑定一个完整的集合称为批量绑定(Bulk Binding)。

批量绑定(Bulk binds)可以通过减少在PL/SQL和SQL引擎之间的上下文切换(context switches )提高了性能.

批量绑定(Bulk binds)包括:
(i) Input collections, use the FORALL statement,一般用来改善DML(INSERT、UPDATE和DELETE) 操作的性能
(ii) Output collections, use BULK COLLECT clause,一般用来提高查询(SELECT)的性能

FORALL的语法如下:

FORALL index IN lower_bound..upper_bound sql_statement;

下面是一个简单测试,用以说明FORALL与FOR循环的性能差异。
SQL> drop table blktest;

Table dropped.

Elapsed: 00:00:00.13
SQL> 
SQL> CREATE TABLE blktest (num NUMBER(20), name varchar2(50));

Table created.

Elapsed: 00:00:00.08
SQL> 
SQL> CREATE OR REPLACE PROCEDURE bulktest
  2  IS
  3     TYPE numtab IS TABLE OF NUMBER (20)
  4        INDEX BY BINARY_INTEGER;
  5  
  6     TYPE nametab IS TABLE OF VARCHAR2 (50)
  7        INDEX BY BINARY_INTEGER;
  8  
  9     pnums    numtab;
 10     pnames   nametab;
 11     t1       NUMBER;
 12     t2       NUMBER;
 13     t3       NUMBER;
 14  BEGIN
 15     FOR j IN 1 .. 1000000
 16     LOOP
 17        pnums (j)         := j;
 18        pnames (j)        := 'Seq No. ' || TO_CHAR (j);
 19     END LOOP;
 20  
 21     SELECT DBMS_UTILITY.get_time
 22       INTO t1
 23       FROM DUAL;
 24  
 25     FOR i IN 1 .. 1000000
 26     LOOP
 27        INSERT INTO blktest
 28             VALUES (pnums (i), pnames (i));
 29     END LOOP;
 30  
 31     SELECT DBMS_UTILITY.get_time
 32       INTO t2
 33       FROM DUAL;
 34  
 35     FORALL i IN 1 .. 1000000
 36        INSERT INTO blktest
 37             VALUES (pnums (i), pnames (i));
 38  
 39     SELECT DBMS_UTILITY.get_time
 40       INTO t3
 41       FROM DUAL;
 42  
 43     DBMS_OUTPUT.put_line ('Execution Time (hsecs)');
 44     DBMS_OUTPUT.put_line ('---------------------');
 45     DBMS_OUTPUT.put_line ('FOR loop: ' || TO_CHAR (t2 - t1));
 46     DBMS_OUTPUT.put_line ('FORALL:   ' || TO_CHAR (t3 - t2));
 47  END;
 48  /

Procedure created.

Elapsed: 00:00:01.46
SQL> exec bulktest;
Execution Time (hsecs)
---------------------
FOR loop: 30361
FORALL:   4792

PL/SQL procedure successfully completed.

Elapsed: 00:06:32.92

我们可以看到FORALL较FOR循环性能大大提高。

Posted by eygle at 8:28 PM | Comments (5)


无尽的爱(Endless Love) - 美丽的神话

作者:eygle

出处:http://blog.eygle.com

20051001_EndlessLove.jpg

老弟买了《神话》的正版DVD,故事情节那个就不用说了,反正一般般,交代不清,牵强附会的地方颇多。

但是电影的主题曲却确实不错,一听就是韩派的柔情曲风,跟金喜善确实精致甚或有些凄美的脸庞相互映衬,倒也很有些气氛。

中间孙楠和韩红的版本,唱功自然是比结尾成龙和金喜善要好不少,只是本身作为韩派曲风,金喜善轻柔的韩语发音,应该是最符合节奏的,越发衬托出成龙唱得实在不敢恭维。

美丽的神话

梦中人熟悉的脸孔
你是我守候的温柔
就算泪水淹没天地
我不会放手
每一刻孤独的承受
只因我曾许下承诺
你我之间熟悉的感动
爱就要苏醒

万世沧桑唯有爱是永远的神话
潮起潮落始终不毁真爱的相约
几番苦痛的纠缠
多少黑夜挣扎
紧握双手让我和你再也不离分

枕上雪冰封的爱恋
真心相拥才能融解
风中摇曳炉上的火
不灭亦不休

等待花开春去春又来
无情岁月笑我痴狂
心如钢铁任世界荒芜
思念永相随

万世沧桑唯有爱是永远的神话
潮起潮落始终不毁真爱的相约
几番苦痛的纠缠
多少黑夜挣扎
紧握双手让我和你再也不离分

悲伤岁月唯有爱是永远的神话
谁都没有遗忘古老
古老的誓言
你的泪水化为漫天飞舞的彩蝶
爱是翼下之风
两心相随自在飞

你是我心中唯一美丽的神话

无尽的爱(Endless Love) -居然还有韩语注音,搞笑

解开我最神秘的等待
星星坠落风在吹动
终於再将你拥入怀中
两颗心颤抖
相信我不变的真心
千年等待有我承诺
无论经过多少的寒冬
我绝不放手

(韩语:以才那耶少呐儿恰苦努路卡妈又)
现在紧抓住我的手闭上眼睛
(无礼差浪海斗那又三刚开吧又)
请你回想起过去我们恋爱的日子
(无礼脑目差浪海少)
我们是因为太爱
(啊怕少奶又)
所以更使得我们痛苦
(少路差浪哈达妈又没太少奶又)
我们连爱你这一句话都无法讲

每一夜被心痛穿越
思念永没有终点
早习惯了孤独相随
我微笑面对
相信我你选择等待
再多苦痛也不闪躲
只有你的温柔能解救
无边的冷漠
让爱成为你我心中
那永远盛开的花
穿越时空绝不低头
永不放弃的梦

(无礼脑目差浪海少)
我们是因为太爱
(啊怕少奶又)
所以更使得我们痛苦
(少路差浪哈达妈又没太少奶又)
我们连爱你这一句话都无法讲
让爱成为你我心中
那永远盛开的花
(无礼少就海斗那少以即那妈拉又)
我们千万不要忘记我们的约定

唯有真爱追随你我
穿越无尽时空

(少路差浪哈达妈又没太少奶又)
我们连爱你这一句话都无法讲

爱是心中唯一不变美丽的神话

Posted by eygle at 3:48 AM | Comments (4)



CopyRight © 2004-2008 eygle.com, All rights reserved.