OLTP系統中儘量使用繫結變數
在OLAP系統中不宜使用繫結變數,但如果是OLTP系統,就要儘量考慮使用繫結變數。
因為OLTP系統的特點是SQL執行非常頻繁,並且用時非常短。
此時,重用shared pool中的執行計劃,減少硬解析所節省的時間就非常可觀了。點選(此處)摺疊或開啟
-
DROP TABLE t;
-
CREATE TABLE t(col1 VARCHAR2(10));
-
-
INSERT INTO t SELECT to_char(ROWNUM) FROM dual CONNECT BY LEVEL <= 100000;
-
-
-
EXECUTE runstats_pkg.rs_start;
-
-
--未使用繫結變數
-
DECLARE
-
TYPE rc IS REF CURSOR;
-
l_cursor rc;
-
BEGIN
-
FOR i IN 1 .. 500 LOOP
-
OPEN l_cursor FOR \'SELECT col1 FROM t WHERE col1 = \' || to_char(i);
-
CLOSE l_cursor;
-
END LOOP;
-
END;
-
/
-
-
-
-
EXECUTE runstats_pkg.rs_middle;
-
-
--使用繫結變數
-
DECLARE
-
TYPE rc IS REF CURSOR;
-
l_cursor rc;
-
BEGIN
-
FOR i IN 1 .. 500 LOOP
-
OPEN l_cursor FOR \'SELECT col1 FROM t WHERE col1 = :x\' USING i;
-
CLOSE l_cursor;
-
END LOOP;
-
END;
-
/
-
-
set serveroutput on size 10000;
-
EXECUTE runstats_pkg.rs_stop(500);
-
-
Run1 ran in 2936hsec
-
Run2 ran in 1520hsec
-
run 1 ran in 193.16% of the time
-
-
Name Run1 Run2 Diff
-
STAT...enqueue releases 509 8 -501
-
STAT...enqueue requests 509 8 -501
-
STAT...db block gets from cach 557 50 -507
-
STAT...db block gets 557 50 -507
-
STAT...bytes received via SQL* 763 1,365 602
-
LATCH.shared pool simulator 790 13 -777
-
LATCH.call allocation 1,009 19 -990
-
LATCH.session allocation 1,006 15 -991
-
LATCH.enqueue hash chains 1,418 302 -1,116
-
STAT...bytes sent via SQL*Net 342 1,459 1,117
-
LATCH.simulator hash latch 1,501 33 -1,468
-
STAT...recursive calls 3,506 1,519 -1,987
-
STAT...calls to kcmgcs 6,022 37 -5,985
-
LATCH.row cache objects 13,610 658 -12,952
-
LATCH.shared pool 28,744 546 -28,198
-
STAT...buffer is not pinned co 29,501 68 -29,433
-
STAT...table scan blocks gotte 29,500 59 -29,441
-
STAT...no work - consistent re 29,501 59 -29,442
-
STAT...consistent gets from ca 34,509 78 -34,431
-
STAT...consistent gets from ca 35,010 93 -34,917
-
STAT...consistent gets 35,010 93 -34,917
-
STAT...session logical reads 35,567 143 -35,424
-
STAT...session uga memory 65,488 0 -65,488
-
LATCH.cache buffers chains 70,767 1,214 -69,553
-
STAT...table scan rows gotten ########## 31,680##########
-
STAT...logical read bytes from########## 1,171,456##########
-
-
Run1 latches total versus runs ----difference and pct
-
Run1 Run2 Diff Pct
-
121,445 4,247 -117,198#######%
-
- PL/SQL procedure successfully completed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1071430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢出系統中沒有使用繫結變數的SQL變數SQL
- PLSQL使用繫結變數SQL變數
- 【優化】使用繫結變數 OR 不使用繫結變數,這不是問題!優化變數
- 【最佳化】使用繫結變數 OR 不使用繫結變數,這不是問題!變數
- 繫結變數變數
- SQL Developer中使用繫結變數SQLDeveloper變數
- 繫結變數的使用範圍變數
- 關於繫結變數的使用變數
- 在oracle的plsql中為cursor使用繫結變數OracleSQL變數
- 使用繫結變數的一點總結!變數
- 繫結變數之繫結變數窺探(Bind Peeking)變數
- 關於DSS中的繫結變數變數
- 統計沒有繫結變數SQL變數SQL
- Oracle 繫結變數Oracle變數
- PL/SQL中繫結變數使用的簡單測試SQL變數
- 【sql調優】使用繫結變數(二)SQL變數
- 【sql調優】使用繫結變數(一)SQL變數
- 繫結變數優缺點、使用、繫結變數窺探、 Oracle自適應共享遊標變數Oracle
- 關於pl/sql中的繫結變數SQL變數
- OCI中繫結變數的實現例子變數
- 如何在對in操作使用變數繫結(轉)變數
- 在繫結變數下使用outline變數
- PLSQL中使用繫結變數的語法SQL變數
- java程式裡怎麼使用繫結變數Java變數
- SQL使用繫結變數,測試例項。SQL變數
- 檢視繫結變數變數
- 繫結變數窺測變數
- Oracle之繫結變數Oracle變數
- 關於繫結變數變數
- ORACLE 繫結變數用法總結Oracle變數
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- 關於sql_profile中的繫結變數SQL變數
- 統計未用繫結變數的sql語句變數SQL
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- 繫結變數窺測的演變變數
- Oracle 變數繫結與變數窺視合集Oracle變數
- 繫結變數的測試變數
- Oracle 繫結變數窺探Oracle變數