In PL/SQL,the statement of "into variable" wasn't appeared in statspack
一現網資料庫cpu經常告警,從statspack報告中可以看到如下的語句消耗了大量的IO和CPU資源:
SELECT NVL(MAX(MENUSEQ),0) FROM MENU WHERE PORTALTYPEID = 4 AND PARENTMENUID = :B1;
初一看,這個查詢語句明顯應該是應用所發出的,不應該是後臺程式,因為後臺程式的話需有into variable才行。
[@more@]查詢後臺程式的指令碼,發現語句“select nvl(max(menuseq),0) into v_maxmenuseq from menu where portaltypeid = 4 and parentmenuid = v_parentmenuid;”確實存在,莫非statspack中的語句就是這個語句?
難道PL/SQL中的into variable不會體現在statspack中?
帶著這個疑問我做了一個小測試,如下:
create table into_test
(
num number(8)
);
CREATE OR REPLACE PROCEDURE proc_test_select_into
AS
v_maxmenuseq number; --選單序列號
v_a number;
BEGIN
for v_a in 1 .. 1000000
loop
select nvl(max(menuseq),0) into v_maxmenuseq from menu where portaltypeid = 4 and parentmenuid = v_a;
insert into into_test values(v_maxmenuseq);
commit;
end loop;
commit;
return;
EXCEPTION
when OTHERS then
rollback;
END proc_test_select_into;
/
exec proc_test_select_into;
在執行proc_test_select_into的前後,做了兩次snap。
top sql中有如下的結果:
Module: PL/SQL Developer
SELECT NVL(MAX(MENUSEQ),0) FROM MENU WHERE PORTALTYPEID = 4 AND
PARENTMENUID = :B1
268,583 132,366 2.0 10.5 24.73 32.05 1630224389
Module: PL/SQL Developer
INSERT INTO INTO_TEST VALUES(:B1 )
174,919 29 6,031.7 6.8 2.72 3.53 69608699
可看出的確PL/SQL中的into variable不會體現在statspack中。
其他應用中發出的into variable是會體現在statspack中的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-929629/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- T-SQL、Jet SQL、PL-SQL 的含義SQL
- [Err] 1231 - Variable 'sql_mode' can't be set to the value of 'NULLSQLNull
- mysql匯入報錯Variable 'sql_notes' can't be set to the value of 'NULL'MySqlNull
- mysql遇到Variable can’t be set to the value of ‘NULL’MySqlNull
- Don't overlook STATSPACK in Oracle 10gOracle 10g
- Statement (操作 SQL 語句)SQL
- [ERR] 1231 - Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'SQL
- PL/SQLSQL
- sql mysql variable autocommit (5)MySqlMIT
- SQL&PL/SQL (轉)SQL
- PL/SQL 宣告SQL
- PL/SQL cursorSQL
- PL/SQL打包SQL
- PL/SQL DEVSQLdev
- Oracle PL/SQLOracleSQL
- How to use sql result stored on shell variable?SQL
- 使用PL/Scope分析PL/SQL程式碼SQL
- PLSQL Language Reference-PL/SQL概覽-PL/SQL架構SQL架構
- [PL/SQL]10g PL/SQL學習筆記(一)SQL筆記
- [PL/SQL]10g PL/SQL學習筆記(二)SQL筆記
- [PL/SQL]10g PL/SQL學習筆記(三)SQL筆記
- 【T-SQL】〇、 T-SQL語法說明SQL
- PL/SQL 迴圈SQL
- PL/SQL 遊標SQL
- PL/SQL 運算子SQL
- PL/SQL 條件SQL
- pl/sql to_dateSQL
- PL/SQL 基礎SQL
- Oracle PL/SQL INDICESOracleSQL
- PL/SQl Developer使用SQLDeveloper
- pl/sql陣列SQL陣列
- pl/sql練習SQL
- oracle PL/SQL示例OracleSQL
- 淺談pl/sqlSQL
- PL/SQL 索引表SQL索引
- pl/sql 練習SQL
- [pl sql] where current ofSQL
- pl/sql功能特性SQL