使用DBMS_HPROF包收集PL/SQL性能信息
DBMS_HPROF包是oracle 11g出现的工具,是DBMS_PROFILER和DBMS_TRACE的综合.这里简单演示如何使用DBMS_HPROF包来分析存储过程性能信
DBMS_HPROF包是Oracle 11g出现的工具,是DBMS_PROFILER和DBMS_TRACE的综合.
这里简单演示如何使用DBMS_HPROF包来分析存储过程性能信息.
首先我们需要执行一个脚本来生成保存相关信息的表.
使用SYS用户执行$ORACLE_HOME/rdbms/admin/dbmshptab.sql
然后创建directory,
CREATE DIRECTORY LOG_FILE_DIR AS '/home/oracle';
先用SCOTT用户创建一个用于测试的存储过程insert_emp.
23:58:57 @ORCL> conn scott/tiger@orcl
Connected.
23:59:35 SCOTT@orcl> CREATE OR REPLACE PROCEDURE insert_emp(pempno number, pename varchar2) IS
23:59:45 2 stmt VARCHAR2(2000);
23:59:45 3 BEGIN
23:59:45 4 stmt := 'INSERT INTO emp_bak '
23:59:45 5 || '(EMPNO,ENAME) '
23:59:45 6 || 'SELECT :EMPNO,:ENAME'
23:59:45 7 || ' FROM DUAL';
23:59:45 8 dbms_output.put_line(stmt);
23:59:45 9 EXECUTE IMMEDIATE stmt
23:59:45 10 USING pempno, pename;
23:59:45 11 END insert_emp;
23:59:46 12 /
Procedure created.
Elapsed: 00:00:00.44
这里演示是在SYS用户下进行,如果要到指定用户执行,需要将DBMS_HPROF包的执行权限以及目录的读写权限赋予给该用户.
收集刚建立的存储过程的性能指标
00:06:11 SYS@orcl> DECLARE
00:10:42 2 v_runid dbmshp_runs.runid%TYPE;
00:10:42 3 v_plshprof_dir all_directories.directory_name%TYPE := 'LOG_FILE_DIR';
00:10:42 4 v_plshprof_file VARCHAR2(30) := 'insert_emp';
00:10:42 5 BEGIN
00:10:42 6 -- Start the profiling session
00:10:42 7 dbms_hprof.start_profiling(v_plshprof_dir, v_plshprof_file);
00:10:42 8 scott.insert_emp(9990,'Cryking!');
00:10:42 9 -- Stop the profiling session
00:10:42 10 dbms_hprof.stop_profiling;
00:10:42 11 -- Analyze the raw output and create the table data
00:10:42 12 v_runid := dbms_hprof.analyze(v_plshprof_dir, v_plshprof_file);
00:10:42 13 DBMS_OUTPUT.PUT_LINE('This Run: ' || to_char(v_runid));
00:10:42 14 END;
00:10:42 15 /
INSERT INTO emp_bak (EMPNO,ENAME) SELECT :EMPNO,:ENAME FROM DUAL
This Run: 1
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.26
执行完后,会在对应目录生成一个insert_emp的文件,直接查看文件的话,内容很凌乱也很简短,如下:
P#! PL/SQL Timer Started
P#C PLSQL."SCOTT"."INSERT_EMP"::7."INSERT_EMP"#762ba075453b8b0d #1
P#X 1331
P#C PLSQL."SYS"."DBMS_OUTPUT"::11."PUT_LINE"#5892e4d73b579470 #109
P#X 4
P#C PLSQL."SYS"."DBMS_OUTPUT"::11."PUT"#5892e4d73b579470 #77
P#X 220
P#R
P#X 2
P#C PLSQL."SYS"."DBMS_OUTPUT"::11."NEW_LINE"#980980e97e42f8ec #117
P#X 4
P#R
P#X 3
P#R
P#X 83
P#C SQL."SCOTT"."INSERT_EMP"::7."__dyn_sql_exec_line9" #9
P#X 39858
P#R
P#X 14
P#R
P#C PLSQL."SYS"."DBMS_HPROF"::11."STOP_PROFILING"#980980e97e42f8ec #59
P#R
P#! PL/SQL Timer Stopped
这里需要使用工具plshprof对其进行分析,如下:
[oracle@oracleserver ~]$ plshprof insert_emp
PLSHPROF: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
[6 symbols processed]
[Report written to 'insert_emp.html']
[oracle@oracleserver ~]$ ls *.html
insert_emp_2c.html insert_emp_fn.html insert_emp_mf.html insert_emp_nsf.html insert_emp_tc.html insert_emp_ts.html
insert_emp_2f.html insert_emp.html insert_emp_ms.html insert_emp_nsp.html insert_emp_td.html
insert_emp_2n.html insert_emp_md.html insert_emp_nsc.html insert_emp_pc.html insert_emp_tf.html
然后我们再查看文件insert_emp.html的内容,如下:
PL/SQL Elapsed Time (microsecs) Analysis
41519 microsecs (elapsed time) & 6 function calls
The PL/SQL Hierarchical Profiler produces a collection of reports that
present information derived from the profiler's output log in a variety
of formats. The following reports have been found to be the most generally
useful as starting points for browsing:
-
Function Elapsed Time (microsecs) Data sorted by Total Subtree Elapsed Time (microsecs)
-
Function Elapsed Time (microsecs) Data sorted by Total Function Elapsed Time (microsecs)
In addition, the following reports are also available:
-
Function Elapsed Time (microsecs) Data sorted by Function Name
-
Function Elapsed Time (microsecs) Data sorted by Total Descendants Elapsed Time (microsecs)
-
Function Elapsed Time (microsecs) Data sorted by Total Function Call Count
-
Function Elapsed Time (microsecs) Data sorted by Mean Subtree Elapsed Time (microsecs)
-
Function Elapsed Time (microsecs) Data sorted by Mean Function Elapsed Time (microsecs)
-
Function Elapsed Time (microsecs) Data sorted by Mean Descendants Elapsed Time (microsecs)
-
Module Elapsed Time (microsecs) Data sorted by Total Function Elapsed Time (microsecs)
.......通过浏览器查看,我们可以点击各个链接,查看,如点击Function Elapsed Time (microsecs) Data sorted by Total Subtree Elapsed Time (microsecs)后,结果如下图:
从图可知,函数最耗时的语句为SCOTT.INSERT_EMO._dyn_sql_exec_line9(即为执行动态sql那一行),耗时39858微秒,整个函数共耗时41519微秒.
还可以点击Function Name列查看更详细的内容.
PS:其实生成的HTML大部分信息都是来自dbmshp_function_info和dbmshp_parent_child_info表.
,

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

是的,可以在 Windows 7 上安裝 MySQL,雖然微軟已停止支持 Windows 7,但 MySQL 仍兼容它。不過,安裝過程中需要注意以下幾點:下載適用於 Windows 的 MySQL 安裝程序。選擇合適的 MySQL 版本(社區版或企業版)。安裝過程中選擇適當的安裝目錄和字符集。設置 root 用戶密碼,並妥善保管。連接數據庫進行測試。注意 Windows 7 上的兼容性問題和安全性問題,建議升級到受支持的操作系統。

InnoDB的全文搜索功能非常强大,能够显著提高数据库查询效率和处理大量文本数据的能力。1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

聚集索引和非聚集索引的區別在於:1.聚集索引將數據行存儲在索引結構中,適合按主鍵查詢和範圍查詢。 2.非聚集索引存儲索引鍵值和數據行的指針,適用於非主鍵列查詢。

MySQL 和 MariaDB 可以共存,但需要謹慎配置。關鍵在於為每個數據庫分配不同的端口號和數據目錄,並調整內存分配和緩存大小等參數。連接池、應用程序配置和版本差異也需要考慮,需要仔細測試和規劃以避免陷阱。在資源有限的情況下,同時運行兩個數據庫可能會導致性能問題。

MySQL 數據庫中,用戶和數據庫的關係通過權限和表定義。用戶擁有用戶名和密碼,用於訪問數據庫。權限通過 GRANT 命令授予,而表由 CREATE TABLE 命令創建。要建立用戶和數據庫之間的關係,需創建數據庫、創建用戶,然後授予權限。

數據集成簡化:AmazonRDSMySQL與Redshift的零ETL集成高效的數據集成是數據驅動型組織的核心。傳統的ETL(提取、轉換、加載)流程複雜且耗時,尤其是在將數據庫(例如AmazonRDSMySQL)與數據倉庫(例如Redshift)集成時。然而,AWS提供的零ETL集成方案徹底改變了這一現狀,為從RDSMySQL到Redshift的數據遷移提供了簡化、近乎實時的解決方案。本文將深入探討RDSMySQL零ETL與Redshift集成,闡述其工作原理以及為數據工程師和開發者帶來的優勢。
