cursor_顯式遊標_與rhel5的效能關係_plsql_儲存過程_sp_procedure
#定義測試表
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
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 儲存過程——遊標儲存過程
- MySQL 儲存過程/遊標/事務MySql儲存過程
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- Mysql儲存過程中使用多遊標MySql儲存過程
- 儲存過程與函式儲存過程函式
- 儲存過程、觸發器與事務之間的關係儲存過程觸發器
- SQLSERVER儲存過程如何寫帶引數的遊標SQLServer儲存過程
- sqlserver 臨時表 遊標 儲存過程拼sql 日期函式等SQLServer儲存過程函式
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- mySql 儲存過程與函式MySql儲存過程函式
- (Oracle)儲存過程、儲存函式和包的相關知識與例項Oracle儲存過程儲存函式
- 儲存過程定義多個遊標多個begin儲存過程
- 儲存過程if,for,while語句,陣列和遊標使用儲存過程While陣列
- mysql 遊標的使用(儲存過程)MySql儲存過程
- oracle 儲存過程遊標的使用Oracle儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- PL/SQL 中的儲存過程與函式SQL儲存過程函式
- 儲存過程 函式儲存過程函式
- tcbs_批量儲存過程_輸出引數out與異常的關係儲存過程
- MySQL自定義函式與儲存過程MySql函式儲存過程
- SQL Server實戰六:T-SQL、遊標、儲存過程的操作SQLServer儲存過程
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- oracle儲存過程詳解--遊標 實現增、刪、改、查Oracle儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- MYsql-儲存過程-遊標的巢狀MySql儲存過程巢狀
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- 關於事務的儲存過程儲存過程
- [原創]儲存過程效能測試儲存過程
- 直接insert與儲存過程insert效能區別儲存過程
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- SQL server儲存過程函式SQLServer儲存過程函式
- Oracle 11g系列:函式與儲存過程Oracle函式儲存過程
- 在sqlplus中呼叫編寫的refcursor 遊標型別的儲存過程SQL型別儲存過程
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- Mysql中儲存過程、儲存函式、自定義函式、變數、流程控制語句、游標/遊標、定義條件和處理程式的使用示例MySql儲存過程儲存函式變數