电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle’s DBMS_Profiler:PL/SQL 性能調(diào)整

瀏覽:6日期:2023-11-18 17:08:56
Oracle’s DBMS_Profiler:PL/SQL 性能調(diào)整DBMS_PROFILER 包舉例 ;;;;下面是我提供的怎樣使用配置的簡單例子,運(yùn)行配置文件來測試下面例程的性能. 例程用到的自定義腳本緊隨其后.1. 創(chuàng)建過程. create or replace procedure am_perf_chk (pi_seq;;in;number, ;pio_status in out nocopy varchar2) is ;;l_dat date := sysdate; begin ;;if trunc(l_dat) = '21-sep-02' and pi_seq = 1 then ;;;;pio_status := 'OK' ;;else ;;;;pio_status := 'Invalid tape loaded' ;;end if; exception ;;when others then ;;;;pio_status := 'Error in am_perf_chek' end; 2. 用配置文件調(diào)用例程 替換上面的例程, 執(zhí)行call_profiler.sql腳本(腳本代碼參見下面),傳入pi_seq=2 SQL> @d:amcall_profiler.sql Profiler started Invalid tape loaded PL/SQL procedure sUCcessfully completed. Profiler stopped Profiler flushed runid:8 3. 評估執(zhí)行時間:執(zhí)行eavluate_profiler_results.sql腳本,得到時間統(tǒng)計SQL> @d:amevaluate_profiler_results.sql Enter value for runid: 8 Enter value for name: am_perf_chk Enter value for owner: scott Line;;;Occur;;;;Msec Text---------- ---------- ---------- ------------------------------------------------------------------- 1;;;;procedure am_perf_chk (pi_seq;;in;number, 2;;;pio_status in out nocopy varchar2) is 3; 243.05965l_dat date := sysdate; 4;;;;begin 5; 186.35732if trunc(l_dat) = '21-sep-02' and pi_seq = 1 then 6; 0; 0;;pio_status := 'OK'; 7 else 8;;;;;;;18.416151;;pio_status := 'Invalid tape loaded'; 9 end if; 10;;;;exception 11 when others then 12; 0; 0;;pio_status := 'Error in am_perf_chek';! 13; 12.410361 end;13 rows selected.Code% coverage-------------- 66.66666674. 正如你看到的,第三行執(zhí)行時間提高到86毫秒.但是改變if語句,重新執(zhí)行上面的過程,將會得到新的結(jié)果: ;;;;;;Line;;;Occur;;;;Msec Text---------- ---------- ---------- ------------------------------------------------------------------- 1;;;;procedure am_perf_chk (pi_seq;;in;number, 2;;;pio_status in out nocopy varchar2) is 3; 2; 17.978816l_dat date := sysdate; 4;;;;begin 5; 18.419503if pi_seq = 1 and trunc(l_dat) = '21-sep-02' then 6; 0; 0;;pio_status := 'OK'; 7 else 8; 17.512684;;pio_status := 'Invalid tape loaded'; 9 end if; 10;;;;exception 11 when others then 12; 0; 0;;pio_status := 'Error in !am_perf_chek'; 13; 1;.731657 end;13 rows selected.Code% coverage-------------- 66.66666675. 正如你看到的, 這種情境下第三行執(zhí)行時間從86毫秒減少到8毫秒,多余的時間是由于內(nèi)置trunc()函數(shù)引起., 這種情境下假如第一個條件為false,則不會執(zhí)行trunc()函數(shù).這僅僅是個簡單的例子,當(dāng)你測試的例程越大,你面臨的挑戰(zhàn)更大.這個配置結(jié)果也證實(shí)了執(zhí)行期間代碼被覆蓋多少行,從而讓我們知道處于性能監(jiān)視中的代碼范圍。 假如任何PL/SQL塊性能出現(xiàn)問題,它也能提煉出各種不同情景的正在在執(zhí)行的代碼并檢查配置結(jié)果,從而查明問題所在。6. 對于一個特定的情景,假如執(zhí)行一段非凡的代碼段,可以得到合理的分析,即使代碼根本一點(diǎn)都不能運(yùn)行。環(huán)境的創(chuàng)建 默認(rèn)安裝或數(shù)據(jù)庫的創(chuàng)建狀態(tài)下,DBMS_PROFILER包不會自動安裝,請DBA用profload.sql腳本創(chuàng)建它.用一個權(quán)限較大的或一個單獨(dú)的用戶,創(chuàng)建存儲統(tǒng)計信息的表。假如用如SYS用戶創(chuàng)建,則給其它用戶授予DML權(quán)限,并且對這些表創(chuàng)建一個共同的簡寫名. 創(chuàng)建表的如下: PLSQL_PROFILER_RUNS表:PL/SQL配置的運(yùn)行細(xì)節(jié). PLSQL_PROFILER_UNITS表:運(yùn)行中每一個庫單元的信息. PLSQL_PROFILER_DATA表:所有配置文件運(yùn)行時的數(shù)據(jù)累積. PLSQL_PROFILER_RUNNUMBER序列提供了RUNID運(yùn)行和解釋配置數(shù)據(jù) ORACLE提供了三個表來統(tǒng)計,填充RUNID。有許多第三方的工具可以提供自定義的基于這些數(shù)據(jù)的報告,ORACLE提供profrep.sql腳本評估數(shù)據(jù)(在<oracle_home>plsqldemo目錄下),下面的兩個簡單腳本就是上面用到的,用來檢查程序單元的執(zhí)行時間.執(zhí)行時間以毫秒存儲 -----------------------------------------------------------Script: call_profiler.sql-----------------------------------------------------------set head offset pages 0select decode(dbms_profiler.start_profiler, '0', 'Profiler started', 'Profiler error')fromdual;--< place your routine in the below block >-- declare l_status varchar2(200);begin am_perf_chk(2, l_status); dbms_output.put_line(l_status);end;/select decode(dbms_profiler.stop_profiler, '0', 'Profiler stopped', 'Profiler error')fromdual;select decode(dbms_profiler.flush_data, '0', 'Profiler flushed', 'Profiler error')fromdual;select 'runid:' plsql_profiler_runnumber.currval fromdual;set head onset pages 200-----------------------------------------------------------Script: evaluate_profiler_results.sql-----------------------------------------------------------undef runidundef ownerundef nameset verify offselect s.line 'Line', p.total_occur 'Occur', p.total_time 'Msec', s.text 'Text'fromall_source s, (select u.unit_owner, u.unit_name, u.unit_type, d.line#, d.total_occur, d.total_time/1000000 total_time fromplsql_profiler_data d, plsql_profiler_units u where; u.runid = &&runid and;u.runid = d.runid and;u.unit_number = d.unit_number) pwhere; s.owner = p.unit_owner (+)and;s.name = p.unit_name (+)and;s.type = p.unit_type (+)and;s.line = p.line# (+)and;s.name = upper('&&name')and;s.owner = upper('&&owner')order by s.line;select exec.cnt/total.cnt * 100 'Code% coverage'from; (select count(1) cnt from plsql_profiler_data d, plsql_profiler_units u where d.runid = &&runid and u.runid = d.runid and u.unit_number = d.unit_number ;;;;;and u.unit_name = upper('&&name') and u.unit_owner = upper('&&owner')) total, (select count(1) cnt from plsql_profiler_data d, plsql_profiler_units u where d.runid = &&runid and u.runid = d.runid and u.unit_number = d.unit_number and u.unit_name = upper('&&name') and u.unit_owner = upper('&&owner') and d.total_occur > 0) exec;undef runidundef ownerundef name結(jié)論 DBMS_PROFILER是非常強(qiáng)大的工具,其一就是可以識別PL/SQL的性能問題.這個工具最好用在開發(fā)時期,用來調(diào)整基于各種應(yīng)用的情景的代碼,它也能用很好的調(diào)整已在使用中的例程并且采取顯而易見的時間去執(zhí)行。 總之,這個工具可以給每一行代碼給予性能統(tǒng)計,它可以幫助我們評估和調(diào)整到一個出色的水平,當(dāng)檢查SQL語句的性能問題時,PL/SQL代碼不應(yīng)該忽略,相反應(yīng)該調(diào)整到最佳的結(jié)果.
標(biāo)簽: Oracle 數(shù)據(jù)庫
主站蜘蛛池模板: 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 亚克隆,RNAi干扰检测,miRNA定量检测-上海基屹生物科技有限公司 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 西安展台设计搭建_西安活动策划公司_西安会议会场布置_西安展厅设计西安旭阳展览展示 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 广东之窗网 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 合金耐磨锤头_破碎机锤头_郑州市德勤建材有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 鑫达滑石-辽宁鑫达滑石集团| 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 电梯装饰-北京万达中意电梯装饰有限公司 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 保健品OEM贴牌代加工厂家_德州健之源|