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 |