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

您的位置:首頁技術文章
文章詳情頁

Oracle診斷案例-Sql_trace之一

瀏覽:6日期:2023-11-17 08:45:15
link:http://www.eygle.com/case/sql_trace_1.htm問題描述:這是幫助一個公司的診斷案例.應用是一個后臺新聞發布系統.癥狀是,通過連接訪問新聞頁是極其緩慢通常需要十數秒才能返回. 這種性能是用戶不能忍受的.操作系統:SunOS 5.8數據庫版本:8.1.71.檢查并跟蹤數據庫進程 診斷時是晚上,無用戶訪問在前臺點擊相關頁面,同時進行進程跟蹤查詢v$session視圖,獲取進程信息SQL> select sid,serial#,username from v$session; SID SERIAL# USERNAME---------- ---------- ------------------------------ 11 21 31 41 51 61 7284 IFLOW11214 IFLOW12164 SYS16 1042 IFLOW10 rows selected. 啟用相關進程sql_traceSQL> exec dbms_system.set_sql_trace_in_session(7,284,true)PL/SQL procedure sUCcessfully completed.SQL> exec dbms_system.set_sql_trace_in_session(11,214,true)PL/SQL procedure successfully completed.SQL> exec dbms_system.set_sql_trace_in_session(16,1042,true)PL/SQL procedure successfully completed.SQL> select sid,serial#,username from v$session; SID SERIAL# USERNAME---------- ---------- ------------------------------ 11 21 31 41 51 61 7284 IFLOW11214 IFLOW12164 SYS16 1042 IFLOW10 rows selected.等候一段時間,關閉sql_traceSQL> exec dbms_system.set_sql_trace_in_session(7,284,false)PL/SQL procedure successfully completed.SQL> exec dbms_system.set_sql_trace_in_session(11,214,false)PL/SQL procedure successfully completed.SQL> exec dbms_system.set_sql_trace_in_session(16,1042,false)PL/SQL procedure successfully completed.2.檢查trace文件檢查發現以下語句是可疑的********************************************************************************select auditstatus,categoryid,auditlevel from categoryarticleassign a,category b where b.id=a.categoryid and articleId= 20030700400141 and auditstatus>0call count cpu elapsed disk query currentrows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse1 0.00 0.00000 0Execute 1 0.00 0.00000 0Fetch1 0.81 0.810 38920 1------- ------ -------- ---------- ---------- ---------- ---------- ----------total3 0.81 0.8103892 0 1******************************************************************************** 這里顯然是根據articleId進行新聞讀取的.很可疑的是query讀取有3892這個內容引起了我的注重.假如碰到過類似的問題,大家在這里就應該知道是怎么回事情了.假如沒有碰到過的朋友,可以在這里思考一下再往下看.Misses in library cache during parse: 1Optimizer goal: CHOOSEParsing user id: 41 Rows Row Source Operation------- --------------------------------------------------- 1 NESTED LOOPS 2 INDEX RANGE SCAN (object id 25062) 1 TABLE Access BY INDEX ROWID CATEGORY 2 INDEX UNIQUE SCAN (object id 25057)********************************************************************************select auditstatus,categoryid from categoryarticleassign where articleId=20030700400138 and categoryId in ('63', '138','139','140','141','142','143','144','168','213','292','341','346', '347','348','349','350','351','352','353','354','355','356','357','358', '359','360','361','362','363','364','365','366','367','368','369','370', '371','372','383','460','461','462','463','621','622','626','629','631', '634','636','643','802','837','838','849','850','851','852','853','854', '858','859','860','861','862','863','-1')call count cpu elapsed disk query currentrows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse1 0.00 0.00000 0Execute 1 0.00 0.00000 0Fetch1 4.91 4.910 28357 1------- ------ -------- ---------- ---------- ---------- ---------- ----------total3 4.91 4.910 28357 1Misses in library cache during parse: 1Optimizer goal: CHOOSEParsing user id: 41 Rows Row Source Operation------- --------------------------------------------------- 1 'TABLE ACCESS FULL CATEGORYARTICLEASSIGN'我們注重到,這里有一個全表掃描存在********************************************************************************3.登陸數據庫,檢查相應表結構SQL> select index_name,table_name,column_name from user_ind_columns 2 where table_name=upper('categoryarticleassign');INDEX_NAME TABLE_NAME COLUMN_NAME------------------------------ ------------------------------ -------------------- IDX_ARTICLEIDCATEGORYARTICLEASSIGNARTICLEIDIND_ARTICLEID_CATEGCATEGORYARTICLEASSIGNARTICLEID IND_ARTICLEID_CATEGCATEGORYARTICLEASSIGNCATEGORYIDIDX_SORTID CATEGORYARTICLEASSIGNSORTID PK_CATEGORYARTICLEASSIGN CATEGORYARTICLEASSIGNARTICLEID PK_CATEGORYARTICLEASSIGN CATEGORYARTICLEASSIGNCATEGORYIDPK_CATEGORYARTICLEASSIGN CATEGORYARTICLEASSIGNASSIGNTYPEIDX_CAT_ARTICLE CATEGORYARTICLEASSIGNAUDITSTATUS IDX_CAT_ARTICLE CATEGORYARTICLEASSIGNARTICLEID IDX_CAT_ARTICLE CATEGORYARTICLEASSIGNCATEGORYIDIDX_CAT_ARTICLE CATEGORYARTICLEASSIGNASSIGNTYPE11 rows selected. 我們注重到,IDX_ARTICLEID索引在以上查詢中都沒有被用到.檢查表結構:SQL> desc categoryarticleassign NameNull? Type ----------------------------------------- -------- ---------------------------- CATEGORYID NOT NULL NUMBER ARTICLEID NOT NULL VARCHAR2(14) ASSIGNTYPE NOT NULL VARCHAR2(1) AUDITSTATUS NOT NULL NUMBER SORTID NOT NULL NUMBER UNPASS VARCHAR2(255) 問題發現:因為ARTICLEID是個字符型數據,查詢中給入的articleId= 20030700400141 是一個數字值Oracle發生潛在的數據類型轉換,從而導致了索引失效SQL> select auditstatus,categoryid 2 from 3 categoryarticleassign where articleId=20030700400132;AUDITSTATUS CATEGORYID ----------- ---------- 9 94 0383 0695 Elapsed: 00:00:02.62Execution Plan----------------------------------------------------------0 SELECT STATEMENT Optimizer=CHOOSE (Cost=110 Card=2 Bytes=38) 1 0 TABLE ACCESS (FULL) OF 'CATEGORYARTICLEASSIGN' (Cost=110 Card=2 Bytes=38) 4.解決方法簡單的在參數兩側各增加一個',既可解決這個問題.對于類似的查詢,我們發現Query模式讀取降低為2幾乎不需要花費CPU時間了********************************************************************************select unpass from categoryarticleassign where articleid='20030320000682' and categoryid='113' call count cpu elapsed disk query currentrows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse1 0.00 0.00000 0Execute 1 0.00 0.00000 0Fetch1 0.00 0.00020 0------- ------ -------- ---------- ---------- ---------- ---------- ----------total3 0.00 0.00020 0Misses in library cache during parse: 1Optimizer goal: CHOOSEParsing user id: 20 Rows Row Source Operation------- --------------------------------------------------- 0 TABLE ACCESS BY INDEX ROWID CATEGORYARTICLEASSIGN 1 INDEX RANGE SCAN (object id 3080)********************************************************************************至此,這個問題得到了完滿的解決.
標簽: Oracle 數據庫
主站蜘蛛池模板: 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | 微动开关厂家-东莞市德沃电子科技有限公司 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 噪声治理公司-噪音治理专业隔音降噪公司 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 宜兴紫砂壶知识分享 - 宜兴壶人| 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 中矗模型-深圳中矗模型设计有限公司 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 手持式浮游菌采样器-全排二级生物安全柜-浙江孚夏医疗科技有限公司 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 包装机_厂家_价格-山东包装机有限公司| 税筹星_灵活用工平台_企业财务顾问_财税法薪综合服务平台 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 |