cursor_顯式遊標_與rhel5的效能關係_plsql_儲存過程_sp_procedure

wisdomone1發表於2010-06-26
#定義測試表
create table t_max_id(tname varchar2(30),max_id number);
 

#經測試,顯式遊標的效能太差了,伺服器一下了就慢好多,不能用了
create or replace procedure p_get_table_max_id(v_table_name varchar2,v_table_col_max_id out number)
is
v_max_id number;
cursor c1 is select max_id from t_max_id where tname=v_table_name;
begin
 open c1;
 loop
     fetch c1 into v_max_id;
     if c1%notfound then
         insert into t_max_id values(v_table_name,1);
         commit;
         dbms_output.put_line('this is a new table or maybe nonexistable table');
     else
        update t_max_id set max_id=v_max_id+1 where tname=v_table_name;
        commit;
     end if;
end loop;
close c1;
end;
/

var a number;
exec p_get_table_max_id('t1',:a);
print a;

Last login: Sat Jun 26 14:18:30 2010 from 192.168.19.168
[root@localhost ~]# vmstat 3  #發現cpu節的wa相當高
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 326576 888052   4212 2025500    1   11    78   792  519  175  3  1 96  1  0
 0  0 326576 888052   4212 2025512    0    0     0    16 1005  224  0  0 100  0  0
 0  0 326576 888052   4220 2025512    0    0     0    28 1004  225  0  0 100  0  0
 0  0 326576 888052   4220 2025512    0    0     0    16 1004  224  0  0 100  0  0
 0  0 326576 888052   4228 2025504    0    0     0    23 1005  229  0  0 100  0  0
 0  0 326576 888052   4228 2025512    0    0     0    16 1005  222  0  0 100  0  0
 0  0 326576 888052   4236 2025504    0    0     0    20 1004  227  0  0 100  0  0
 0  0 326576 888052   4236 2025512    0    0     0    16 1003  223  0  0 100  0  0
 0  0 326576 888052   4244 2025504    0    0     0    20 1004  225  0  0 100  0  0
 0  0 326576 888052   4244 2025512    0    0     0    16 1004  223  0  0 100  0  0
 0  0 326140 887496   4252 2025972  204    0   213    28 1024  275  0  0 97  3  0
 0  0 326140 887496   4252 2025980    0    0     0    16 1004  225  0  0 100  0  0
 0  0 326140 887496   4252 2025980    0    0     0    69 1013  225  0  0 100  0  0
 0  0 325576 885212   4344 2026884  357    0   496    33 1074  351  1  0 81 17  0
 0  0 325576 885088   4352 2026896    0    0     3    35 1008  233  0  0 100  0  0
 0  0 325576 885088   4360 2026888    0    0     1    24 1007  224  0  0 100  0  0
 0  0 325576 885088   4360 2026888    0    0     0    16 1005  226  0  0 100  0  0
 0  0 325576 885088   4368 2026880    0    0     0    21 1004  228  0  0 100  0  0
 0  0 325576 885088   4368 2026880    0    0     0    16 1004  227  0  0 100  0  0
 0  0 325576 885088   4376 2026872    0    0     0    20 1005  226  0  0 100  0  0
 0  0 325576 885088   4376 2026872    0    0     0    16 1003  223  0  0 100  0  0
 0  0 325576 885088   4384 2026864    0    0     0    20 1006  226  0  0 100  0  0
 0  0 325576 885088   4384 2026864    0    0     0    16 1005  224  0  0 100  0  0
 0  0 325576 885088   4392 2026856    0    0     0    20 1004  226  0  0 100  0  0
 0  0 325576 885088   4392 2026856    0    0     0    19 1005  226  0  0 100  0  0
 1  0 325576 885088   4400 2026848    0    0     0    23 1003  224  0  0 100  0  0
 0  0 325576 885088   4400 2026848    0    0     0    16 1007  225  0  0 100  0  0
 0  0 325576 885088   4408 2026840    0    0     0    20 1005  226  0  0 100  0  0
 0  0 325576 885088   4408 2026964    0    0     0    16 1004  224  0  0 100  0  0
 0  0 325576 885088   4416 2026964    0    0     0    20 1005  224  0  0 100  0  0
 0  0 325576 885088   4416 2026964    0    0     0    16 1005  224  0  0 100  0  0
 1  1 325548 879756   4436 2032160    0    0   145  1903 1119  596  8  2 86  3  0
 0  2 324956 858552   4452 2051464  831    0  1417  7076 1549 1909 32  7 21 40  0
 0  2 323556 847392   4468 2058708 1792    0  2239  2795 1508 1814 18  5 50 28  0
 0  2 322004 843796   4480 2066752 2096    0  2505  2843 1493 1755 20  5 48 27  0
 2  1 320412 831520   4488 2074644 1988    0  2573  3256 1677 2279 18  6 50 27  0
 1  1 319196 821108   4548 2082020 1637    0  1981  2569 1366 1385 17  4 44 35  0
 1  1 317908 809576   4552 2089944 1627    0  2179  3311 1623 2141 19  6 50 25  0
 1  1 316744 799284   4568 2097064 1389    0  2093  3420 1771 2547 17  6 50 27  0
 0  2 314920 786264   4584 2104988 2291    0  2559  2448 1358 1331 19  4 50 27  0
 0  2 313352 765928   4592 2113552 1901    0  2309  2980 1513 1769 22  6 47 25  0
 0  3 311784 750676   4608 2122316 1875    0  2641  3945 2320 3347 32  9 27 32  0
 1  1 309684 737160   4612 2130804 2328    0  2785  3012 1717 2113 22  6 43 29  0
 0  3 308652 729100   4632 2136884 1032    0  1464  2619 1470 1703 14  5 50 32  0
 0  2 307300 716204   4672 2146860 1421    0  1721  3485 1369 1522 16  5 49 30  0
 0  3 305740 703432   4684 2156368 1645    0  2017  3312 1441 2003 18  5 49 28  0
 
#強制取消遊標的執行,系統一下子快起來了,cpu的wa變為0
 0  0 305148 699340   4708 2159072  631    0   673   804 1079  462  4  1 86  9  0
 0  0 305148 699340   4708 2159072    0    0     0    17 1004  224  0  0 100  0  0
 0  0 305148 699340   4716 2159072    0    0     0    20 1004  225  0  0 100  0  0
 0  0 305148 699340   4716 2159072    0    0     0    61 1013  223  0  0 100  0  0
 0  0 305148 699340   4724 2159072    0    0     0    20 1005  226  0  0 100  0  0

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-666386/,如需轉載,請註明出處,否則將追究法律責任。

相關文章