Tips to optimize plsql

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- Tips to optimize plsql (http://www.webasp.net/article/22/21209.htm)
-- 作者:未知
-- 發佈日期: 2005-04-29

1. 利用DBMS_APPLICATION_INFO進行實時監控DECLARE lv_count_num PLS_INTEGER:=0; lv_start_time_num PLS_INTEGER;BEGIN

2.在數據庫表中記錄計時信息

3.減少PL/SQL程序的單元迭代和迭代時間

4.使用 ROWID進行迭代處理

5.將數據類型,IF語句的排列和PLS_INTEGER標準化--確保比較運算中的數據類型相同--根據條件出現的頻率來排序IF條件--使用PLS_INTEGER PL/SQL數據類型進行整數運算

6.減少對SYSDATE的調用

7.減少對MOD函數的調用

8.在共享池中預載對像

9.標識需要加載的PL/SQL對像

10.使用和修改DBMS_SHARED_POOL.SIZES

11. 從DBA_OBJECT_SIZE中獲取詳細的信息

12. 發現無效的對象col "Owner" format a12col "Object" format a20col "OType" format a12col "Change Date" format a20SELECT SUBSTR(owner,1,12) "Owner", SUBSTR(object_name,1,20) "Object" , object_type "OType", TO_CHAR(last_ddl_time,'DD-MON-YYYY HH24:MI:SS') "Change Date" FROM dba_objects WHERE status<>'VALID' ORDER BY 1,2

 重新編譯所有的存儲過程,函數和程序包 begin dbms_utility.compile_schema('GW'); end;

13. 發現已禁用的觸發器

14. 將PL/SQL作為快速參考表查詢

15.查找和調整所使用對象的SQL

16.在處理DATE數據類型時使用時間信息

17.調整和測試PL/SQL

18.瞭解PL/SQL對像定位的含義

19.使用回滾段打開大型游標

20. 使用臨時表來提高性能

21.集成用戶跟蹤機制以定位執行位置

22.限制動態SQL的使用

23.簡單示例

查詢索引select table_name, index_name,column_name,column_positionfrom dba_ind_columnswhere table_name='XXX'and table_owner='XXX'order by index_name,column_position

在v$sqlarea中找出最占資源的查詢SELECT b.username username,a.disk_reads READS,a.executions EXEC, a.disk_reads/DECODE(a.executions,0,1,a.executions) rds_exec_ratio, a.sql_text statementFROM v$sqlarea a,dba_users bWHERE a.parsing_user_id=b.user_idAND a.disk_reads>100000ORDER BY a.disk_reads DESC

在v$sql中找出最占資源的查詢SELECT * FROM ( SELECT sql_text,rank() OVER(ORDER BY buffer_gets DESC) AS rank_bufgets, TO_CHAR(100*ratio_to_report(buffer_gets) OVER(), '999.99') pct_bufgets FROM v$sql) WHERE rank_bufgets<11

webasp.net